使用 Ionic 和 AngularJS。从服务器下载的数据库,在 Android 的 SQLite 数据库中未检测到表,但在 iOS 中工作
Ionic and AngularJS are used. Downloaded DB from server, tables are not detected in SQLite DB for Android but working in iOS
申请背景:
- 正在使用 $cordovaFileTransfer 下载数据库。
- 使用 $cordovaZip 解压
- 使用 window.sqlitePlugin.openDatabase({name: 'name of the DB'})
访问数据库
正在保存数据库,'cordova.file.dataDirectory;'
当我尝试使用以下代码在数据库上执行命令时:
db.executeSql(query, parameters, function (result) {
//alert('execution result is in console');
console.log('Check SELECT result from rows: ' +
JSON.stringify(result.rows.item(0)));
//alert('Check SELECT result from rows: ' +
JSON.stringify(result.rows.item(0)));
console.log('Check SELECT result from rows_only result: ' +
JSON.stringify(result));
q.resolve(result);
},function(error){
alert('Error from factory DBA self.query: ' + JSON.stringify(error));
q.reject(error);
});
对于 iOS 一切正常,我在成功函数中看到了结果,而在 Android 中,它进入错误块说 "sqlite prepare statement error - no such table"
注意:在将数据库位置从 documentsDirectory 更改为 dataDirectory 之前,我之前在 Android 上得到了 "EROF error"。
应该使用 /data/data/{appidentifier}/databases/ 而不是 dataDirectory!!!
申请背景:
- 正在使用 $cordovaFileTransfer 下载数据库。
- 使用 $cordovaZip 解压
- 使用 window.sqlitePlugin.openDatabase({name: 'name of the DB'}) 访问数据库
正在保存数据库,'cordova.file.dataDirectory;'
当我尝试使用以下代码在数据库上执行命令时:
db.executeSql(query, parameters, function (result) {
//alert('execution result is in console');
console.log('Check SELECT result from rows: ' +
JSON.stringify(result.rows.item(0)));
//alert('Check SELECT result from rows: ' +
JSON.stringify(result.rows.item(0)));
console.log('Check SELECT result from rows_only result: ' +
JSON.stringify(result));
q.resolve(result);
},function(error){
alert('Error from factory DBA self.query: ' + JSON.stringify(error));
q.reject(error);
});
对于 iOS 一切正常,我在成功函数中看到了结果,而在 Android 中,它进入错误块说 "sqlite prepare statement error - no such table"
注意:在将数据库位置从 documentsDirectory 更改为 dataDirectory 之前,我之前在 Android 上得到了 "EROF error"。
应该使用 /data/data/{appidentifier}/databases/ 而不是 dataDirectory!!!