sqlite3 没有第二次打开预填充的数据库

Posted

技术标签:

【中文标题】sqlite3 没有第二次打开预填充的数据库【英文标题】:sqlite3 is not opening pre-populated database second time 【发布时间】:2020-12-08 07:41:30 【问题描述】:

我正在探索 sqlite 3 插件,我发现了一个我在网上没有发现的奇怪问题。

我正在研究 android 。所以,在资产文件夹中,我有一个包含一些数据的数据库。数据库名称为sqliteexample.db。 然后我使用下面的代码打开数据库。而且很成功。

var SQLite = require('react-native-sqlite-storage');
var db = SQLite.openDatabase(
  
    name: 'sqliteexample',
    createFromLocation: '1'
  ,
  () => 
    console.log('db connection success');
  ,
  (error) => 
    console.log('db connection error');
    console.log(error)
  ,
);

现在,为了检查不同的场景,我将数据库文件名重命名为sqliteexample1.db。然后我将其更改为如下代码


    name: 'sqliteexample1',
    createFromLocation: '1'
  ,

就是这样,我开始收到错误cannot open database

它是如何在内部访问它的? 如果我跳过createFromLocation: '1',它会创建一个新数据库吗?

请任何人帮助我。

【问题讨论】:

【参考方案1】:

很简单,

如果数据文件的名称与 dbName 相同

SQLite.openDatabase(name : "sqliteexample", createFromLocation : 1, okCallback,errorCallback);

如果数据文件的名称不同于 dbName

SQLite.openDatabase(name : "sqliteexample", createFromLocation : "~sqliteexample1.db", okCallback,errorCallback);

如果您的文件夹不在应用程序包中而是在应用程序沙箱中

SQLite.openDatabase(name : "sqliteexample", createFromLocation : "pathroot/data/mydbfile.sqlite", okCallback,errorCallback);

问题是文件名和数据库名不必总是相同。

【讨论】:

以上是关于sqlite3 没有第二次打开预填充的数据库的主要内容,如果未能解决你的问题,请参考以下文章

发布后,每个页面第一次打开都很卡,50秒或更长,第二次打开就很快了

SQLite第七课 sqlite3_bind_int应用注意

如何在我的项目中创建第二个目标来为 iOS 创建一个预填充的数据库

在 react-native 中打开预填充的 SQLite 数据库,将数据库放在哪里?

第一次在 recyclerview 上显示获取数据,但第二次打开 recyclerview 不显示数据

带有预加载 sqlite3 数据库的 iOS 单元测试