使用 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

申请背景:

  1. 正在使用 $cordovaFileTransfer 下载数据库。
  2. 使用 $cordovaZip 解压
  3. 使用 window.sqlitePlugin.openDatabase({name: 'name of the DB'})
  4. 访问数据库

正在保存数据库,'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!!!