我尝试使用android应用程序的react-native打开Sqlite数据库,但无法使用存储在项目资产目录中的预填充数据库打开。
我从openDataBase代码中删除了位置,并从源数据库中创建了createfromLocation databae,它是在android设备中创建的,没有模式和数据将为空。我可以从代码中填充数据,但这没有任何意义。那么我可能犯的错误是什么?我在这里错过了什么吗?
代码(App.js文件):
const db = SQLite.openDatabase(
{
name: 'Recipe.db',
location: 'default',
createFromLocation: '~Recipe.db',
}
日志:
OPEN database: Recipe.db
05-20 09:22:23.620 5975 6009 I ReactNativeJS: new transaction is waiting for open operation
05-20 09:22:23.629 5975 6009 I ReactNativeJS: OPEN database: Recipe.db failed, aborting any pending transactions
05-20 09:22:23.632 5975 6009 I ReactNativeJS: { [Error: Could not open database]
05-20 09:22:23.632 5975 6009 I ReactNativeJS: code: 0,
05-20 09:22:23.632 5975 6009 I ReactNativeJS: line: 100047,
05-20 09:22:23.632 5975 6009 I ReactNativeJS: column: 27,
答案 0 :(得分:1)
如果SQLite数据库存储在Assets文件夹中,则无法打开该数据库进行写入。通常,在启动时,应用程序将检查其自己的/ data / data / database文件夹中是否具有SQLite数据库。如果没有,它将数据库从Assets文件夹复制到/ data / data / database文件夹,然后打开该副本进行写入。
即使更新了应用程序,在/ data / data / database文件夹中对数据库所做的更改仍将保留。但是,如果用户删除该应用程序,它将被删除。然后该应用将不得不再次进行数据库复制。