【发布时间】: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 用户(加上我的测试设备呵呵)
【问题讨论】:
标签: android sqlite cordova ionic-framework ionic4