【发布时间】:2016-10-18 14:22:58
【问题描述】:
我是 ionic 2 开发的新手(也没有使用 ionic-1)。
我正在尝试在应用程序中使用cordova sqlite 插件。我关注了Use SQLite in Ionic 2 链接。能够使用以下命令将插件添加到项目中。
$ ionic 插件添加cordova-sqlite-storage
在真实设备上部署应用程序后,创建并打开了data.db,并成功创建了peopletable。
以下是来自 Xcode 的日志:
2016-10-17 16:29:16.435992 SqlProject[238:3982] -[SQLitePlugin pluginInitialize] [第 67 行] 路径没有云同步:/var/mobile/Containers/Data/Application/DFDADD59-D48E-4D4C -B8F0-23EEDE169471/图书馆/本地数据库 2016-10-17 16:29:16.436138 SqlProject[238:4034] -[SQLitePlugin openNow:] [第 137 行] 打开完整的数据库路径:/var/mobile/Containers/Data/Application/DFDADD59-D48E-4D4C-B8F0- 23EEDE169471/图书馆/LocalDatabase/data.db 2016-10-17 16:29:16.443765 SqlProject[238:4034] -[SQLitePlugin openNow:] [第 163 行] 好消息:SQLite 是线程安全的! 2016-10-17 16:29:16.448487 SqlProject[238:3982] 打开数据库:data.db - OK 2016-10-17 16:29:16.463667 SqlProject[238:3982] 表已创建: [object Object]
打开数据库的代码:
从 'ionic-native' 导入 { SQLite };
constructor(platform: Platform) {
platform.ready().then(() => {
StatusBar.styleDefault();
let database = new SQLite();
database.openDatabase({
name: "data.db",
location: "default"
}).then(() => {
database.executeSql("CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY AUTOINCREMENT, firstname TEXT, lastname TEXT)", {}).then((data) => {
console.log("TABLE CREATED: ", data);
}, (error) => {
console.error("Unable to create table", error);
})
}, (error) => {
console.error("Unable to open database", error);
});
});
}
但是,现在我在 Inserting 和 Fetching 数据库中的记录时遇到了错误。
public add() {
console.log("Inside the add function- ");
this.database.executeSql("INSERT INTO people (firstname, lastname) VALUES (?, ?)", ['mahesh', 'bhalerao']).then((data) => {
console.log("INSERTED: " + JSON.stringify(data));
}, (error) => {
console.log("ERROR: " + JSON);
});
}
public fetchRecords() {
this.database.executeSql("SELECT * FROM people", []).then((data) => {
alert("executeSql refresh function success");
this.people = [];
if(data.rows.length > 0) {
for(var i = 0; i < data.rows.length; i++) {
this.people.push({firstname: data.rows.item(i).firstname, lastname: data.rows.item(i).lastname});
}
}
}, (error) => {
console.log("ERROR: " + JSON.stringify(error.err));
});
}
我收到未定义的错误。
错误:未定义
不知道出了什么问题。
任何帮助将不胜感激。 谢谢!
【问题讨论】:
-
你确定这个插件支持promise吗?如果我没记错的话,您必须使用返回结果集的成功回调。您能否展示请展示更多相关代码(例如 this.database 是什么以及它是如何打开和处理的)
-
@Fylax 我已经添加了打开数据库的相关信息。
标签: database sqlite cordova cordova-plugins ionic2