我正在使用Ionic 2,并关注this tutorial。
我的问题是我似乎无法打开数据库。我将它部署到名为KOPLAYER的Android模拟器。
app.ts
initializeApp() {
this.platform.ready().then(() => {
StatusBar.styleDefault();
if (window.cordova) {
this.createDatabase();
}
});
}
和
private createDatabase(): void {
let db: SQLite = new SQLite();
db.openDatabase({
name: "data.db",
location: "default"
}).then(() => {
db.executeSql("CREATE TABLE IF NOT EXISTS chats (_id TEXT PRIMARY KEY, memberIds TEXT, title TEXT, subTitle TEXT, picture TEXT, lastMessageId TEXT, lastMessageCreatedAt DATE)", {}).then((chatData) => {
console.log("chats TABLE CREATED: ", chatData);
db.executeSql("CREATE TABLE IF NOT EXISTS messages (_id TEXT PRIMARY KEY, chatId TEXT, senderId TEXT, ownership TEXT, content TEXT, createdAt DATE, changeDate BOOLEAN, readByReceiver BOOLEAN)", {}).then((messageData) => {
console.log("messages TABLE CREATED: ", messageData);
}, (error) => {
console.error("Unable to execute messages sql", error);
});
}, (error) => {
console.error("Unable to execute chats sql", error);
});
}, (error) => {
console.error("Unable to open database", error);
});
}
storageService.ts
public database: SQLite;
constructor() {
if (window.cordova) {
this.openDatabase();
}
}
和
private openDatabase(): void {
console.log('openDatabase');
this.database.openDatabase({ name: "data.db", location: "default" }).then(() => {
this.refreshChats();
this.refreshMessages();
}, (error) => {
console.log("ERROR: ", error);
});
}
openDatabase
被输出到控制台,但this.refreshChats();
没有被调用。根据控制台日志,app.ts
中的数据库创建看起来是正确的。
OPEN database: data.db SQLitePlugin.js:175 OPEN database: data.db - OK SQLitePlugin.js:179 chats TABLE CREATED: Object app.bundle.js:215 messages TABLE CREATED: Object app.bundle.js:217
然后
openDatabase
我使用chrome://inspect/#devices
来查看控制台输出。是否有其他工具可用于查看在模拟器上运行的数据库?
任何帮助表示感谢。
答案 0 :(得分:0)
我的错误,我忘记了this.database = new SQLite();
private openDatabase(): void {
this.database = new SQLite();
this.database.openDatabase({ name: "data.db", location: "default" }).then(() => {
this.refreshChats();
this.refreshMessages();
}, (error) => {
console.log("ERROR: ", error);
});
}