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

Posted

技术标签:

【中文标题】ionic 4 sqlite-ext 未加载预填充的数据库【英文标题】:ionic 4 sqlite-ext not loading prepoluated atabase 【发布时间】:2020-03-19 04:05:14 【问题描述】:

我已按照所有示例说明如何执行此操作,但我无法让 cordova-sqlite-ext 工作。这是非常漫长的一周……我有一个简单的 SQLite 数据库,它已经过测试,可以在 SQLite 查看器中正常工作。我把它卡在了 www/ (也像其他 3 个地方一样祈祷我可以让它工作)。我的运气是0。当它肯定存在时,我总是得到“表数据不存在”的结果。

测试软件:android 5.0.1

cordova plugin list:
cordova-plugin-dbcopy 2.1.2 "sqlDB"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-googlemaps 2.6.2 "cordova-plugin-googlemaps"
cordova-plugin-ionic-keyboard 2.1.3 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 4.0.1 "cordova-plugin-ionic-webview"
cordova-plugin-is-debug 1.0.0 "IsDebug"
cordova-plugin-screen-orientation 3.0.2 "Screen Orientation"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-sqlite-ext 3.0.1 "Cordova sqlite storage plugin with extra features"
cordova-sqlite-storage 3.4.0 "Cordova sqlite storage plugin - cordova-sqlite-storage plugin version"
es6-promise-plugin 4.2.2 "Promise"
uk.co.workingedge.cordova.plugin.sqliteporter 1.1.1 "sqlite porter"
import  Platform  from '@ionic/angular';
import  Injectable  from '@angular/core';
//import  SQLitePorter  from '@ionic-native/sqlite-porter/ngx';
import  HttpClient  from '@angular/common/http';
import  SQLite, SQLiteObject  from '@ionic-native/sqlite/ngx';
import  BehaviorSubject, Observable  from 'rxjs';

export class DatabaseService 

private database: SQLiteObject;
private dbReady: BehaviorSubject = new BehaviorSubject(false);

constructor(private sqlite: SQLite,
private plt: Platform,
) 
this.startDatabase();


startDatabase()

let options = 
  name: "asv.sqlite",
  location: 'default',
  createFromLocation: 1 


this.plt.ready().then(() => 
  this.sqlite.create(options).then((db: SQLiteObject) => 
    //this.database = db;
    db.executeSql('select distinct book_name from data', [])
    .then((data) => 
      console.log("Grabbed Books")
      console.log(data)
    );
    //this.seedDatabase(bible_version);
  )
  .catch(e => 
    console.error(e)
  );  
);
//);

注意:我已经能够通过将 sqlite 数据库转换为 SQL 数据库并使用 porter 将其转换来使其工作。但这显然是一种时髦的做事方式,因为当我可以预构建数据库时,我不想构建它。

还有。我尝试将数据库的名称更改为其他名称,并构建表,它工作正常。我能够收集一些我输入的虚假数据。

在单独的说明中。我正在尝试在我的 android 上的应用程序中找到此文件,如果它不在 www/ 中,默认将其放置在哪里?

更新:我发现确实在 data/data//database 文件夹中创建了一个数据库文件。我怎样才能让它在不使用 dbcopy 的情况下使用我的数据库! dbcopy 需要 android 8,这会切断 20% 的 android 用户(加上我的测试设备呵呵)

【问题讨论】:

【参考方案1】:

我终于明白了。一周后,我在问问题后的第二天回答,哈哈。因此,对于未来的人,请检查您的包裹。我还安装了 sqlite-storage 的非 ext 版本,而我的应用程序正在使用该包。 " cordova-sqlite-storage 3.4.0 “Cordova s​​qlite 存储插件 - cordova-sqlite-storage” 我从 cordova(cordova 插件 rm cordova-sqlite-storage)中卸载并删除,它可以工作。呃

Old Plugins:
cordova plugin list:
cordova-plugin-dbcopy 2.1.2 "sqlDB"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-googlemaps 2.6.2 "cordova-plugin-googlemaps"
cordova-plugin-ionic-keyboard 2.1.3 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 4.0.1 "cordova-plugin-ionic-webview"
cordova-plugin-is-debug 1.0.0 "IsDebug"
cordova-plugin-screen-orientation 3.0.2 "Screen Orientation"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-sqlite-ext 3.0.1 "Cordova sqlite storage plugin with extra features"
cordova-sqlite-storage 3.4.0 "Cordova sqlite storage plugin - cordova-sqlite-storage plugin version"
es6-promise-plugin 4.2.2 "Promise"
uk.co.workingedge.cordova.plugin.sqliteporter 1.1.1 "sqlite porter"
New Plugins:
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-googlemaps 2.6.2 "cordova-plugin-googlemaps"
cordova-plugin-ionic-keyboard 2.1.3 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 4.0.1 "cordova-plugin-ionic-webview"
cordova-plugin-is-debug 1.0.0 "IsDebug"
cordova-plugin-screen-orientation 3.0.2 "Screen Orientation"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-sqlite-ext 3.0.1 "Cordova sqlite storage plugin with extra features"
es6-promise-plugin 4.2.2 "Promise"
uk.co.workingedge.cordova.plugin.sqliteporter 1.1.1 "sqlite porter"

【讨论】:

以上是关于ionic 4 sqlite-ext 未加载预填充的数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何在预加载的数据库中填充 ListView

angular 6 ionic 4 默认组件未注册

由于 Ionic 4 中的路径问题,图像未加载到离子服务上

无法将组件加载到页面中 - Angular 4/Ionic 3

离子预填充数据库 Sqlite

预输入数据列表文本框未重置