Ionic SQLite -- 检查数据库是不是存在

Posted

技术标签:

【中文标题】Ionic SQLite -- 检查数据库是不是存在【英文标题】:Ionic SQLite -- check if database existsIonic SQLite -- 检查数据库是否存在 【发布时间】:2017-10-21 14:28:13 【问题描述】:

我正在尝试 Ionic 框架。我需要在 android SQLite 中存储一些数据。所以,我想打开或创建一个数据库,如果数据库之前不存在,用一些数据填充它。

这里说我使用create 方法,即使数据库已经存在: https://ionicframework.com/docs/native/sqlite/

于是我写了一个类:

export class Database 
  private sqlite: SQLite;
  private database: SQLiteObject = null;

  constructor() 
    this.sqlite = new SQLite();
  

  private open_db() 
    return this.sqlite.create(
        name: 'data.db',
        location: 'default'
    )
    .then((db: SQLiteObject) => 
        this.database = db;
        return db.sqlBatch([...some sql inserts and create tables...]);
    );
  );

  public all() 
    return this.open_db().then(() => this.database.executeSql("SELECT ...something...", []));
  

现在,我如何仅在数据库实际创建而不是打开时才调用 db.sqlBatch? 是的,这段代码在没有合理解释的情况下抛出随机异常,可以在 logcat 中看到,任何建议都将不胜感激。

【问题讨论】:

【参考方案1】:

使用 openDatabase 命令代替 create。如果数据库不存在,这将创建数据库。

试试看这篇文章

https://www.thepolyglotdeveloper.com/2015/12/use-sqlite-in-ionic-2-instead-of-local-storage/

我还建议在 $ionicPlatform.ready 的开头使用此命令并将其保存在某个全局变量中,这样您就可以在应用程序中随时访问它。我一直在使用带有 ionic v1 的 sqlite 插件。上面的链接将帮助您将它与 ionic v2 集成。

【讨论】:

我想知道这在 ionic 3 中是否仍然有效。文档没有提到任何关于 openDatabase 方法的内容。 ionicframework.com/docs/native/sqlite @Devaroop 我认为根据 github 上的官方文档。 “openDatabase”是正确的方法。到目前为止,我还没有使用过 ionic 3 应用程序。所以我不能确定。 github.com/xpbrew/cordova-sqlite-storage

以上是关于Ionic SQLite -- 检查数据库是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

ionic1 sqlite的添加使用

我们可以使用 ionic 框架将视频存储在 sqlite 数据库中吗?如果可以,我们如何存储它?

Ionic - 在 android 的不同目录中创建 SQLite 数据库

什么意思位置:'default' SQLite 和 Ionic 预填充数据库

C++ 使用 SQLite3 ,打开指定数据库,执行插入操作后会啥会写到磁盘?不是对内存进行操作吗?

ionic 4 sqlite-ext 未加载预填充的数据库