Ionic 3 SQLite - 数据库作为私有成员变量与在每个查询上创建一个新数据库?

Posted

技术标签:

【中文标题】Ionic 3 SQLite - 数据库作为私有成员变量与在每个查询上创建一个新数据库?【英文标题】:Ionic 3 SQLite - database as private member variable vs. creating a new database on every query? 【发布时间】:2018-03-25 23:33:33 【问题描述】:

我有一个简单的问题 - 在 Ionic 3 中将打开的数据库放在数据库提供程序类的私有成员变量中,还是在每次查询数据库时调用 create 会更好?

这个...

private db: SQLiteObject;

constructor() 
  this.sqlite.create(...)
  .then((db: SQLiteObject) => 
    this.db = db;
  )


queryMethod() 
  db.executeSql(sql, );

...或这个

constructor() 



queryMethod() 
  this.sqlite.create(...)
  .then((db: SQLiteObject) => 
    db.executeSql(sql, );
  );

我确实看到第一种方法存在问题,因为在访问数据库之前可能尚未创建数据库的可能性很小。

【问题讨论】:

【参考方案1】:

是的,因为这是Promise,所以您始终需要使用2nd 选项。这样您就不会遇到任何问题。这意味着您需要在解决承诺后执行查询。

始终遵循以下模式:

queryMethod() 
  this.sqlite.create(...)
  .then((db: SQLiteObject) => 
    db.executeSql(sql, );
  );

【讨论】:

以上是关于Ionic 3 SQLite - 数据库作为私有成员变量与在每个查询上创建一个新数据库?的主要内容,如果未能解决你的问题,请参考以下文章

使用 IONIC 3 + CORDOVA 在 SQLite 中创建数据库

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

Ionic PouchDb Sqlite 插件问题

ionic 运用pouchdb/sqlite 数据库做本地存储

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

在 Ionic2 v3.4 中读取 SQLite SELECT 查询的结果