gpt4 book ai didi

android - 如何在 android 中使用 SQLitePlugin Cordova 填充数据库?

转载 作者:太空狗 更新时间:2023-10-29 15:04:18 25 4
gpt4 key购买 nike

我已按照 Gaurav 的建议将“demo.db”文件复制到/data/data/package_name/databases/: 访问:http://gauravstomar.blogspot.com/2011/08/prepopulate-sqlite-in-phonegap.html

“demo.db”已经创建了表(例如:Projects)

我尝试使用 SQLitePlugin 连接到“demo.db”https://github.com/chbrody/Cordova-SQLitePlugin/

我已经按照插件开发者的建议安装了这个插件。

在我的 .js 部分,在触发“deviceready”事件后,我已经完成了以下操作:

var db = window.sqlitePlugin.openDatabase("demo", "1.0", "my demo", 500000);
db.transaction(function(tx){
tx.executeSql('INSERT INTO Projects (ProjectCode, ProjectDescription) VALUES(?,?)',["Lastly", "fdgsdfgsdg"], function(tx, result){
tx.executeSql('SELECT * FROM Projects',[],function(tx, result){
alert("projects");
for (var i=0; i<result.rows.length; i++){
alert("Row = " + i + " ID = " + result.rows.item(i).ProjectId + "ProjectCode = " + result.rows.item(i).ProjectCode);
}
hideLoading();
});
}, function(err) {//error callback function.
alert("Database is not created.");
hideLoading();
});

在我的例子中,SQLitePlugin 没有使用导入的“demo.db”,而是通过覆盖导入的数据库创建了新的数据库“demo.db”。当执行插入代码时,它抛出错误,“错误:没有这样的表:项目”。因此,错误回调函数被触发。请建议我解决我的问题。

最佳答案

我已经找到了解决方案。对于我的情况,这是由于从 sqlite3(通过 sqliteadmin)和 SQLitePlugin 创建的 .db 文件的版本不兼容。为了摆脱它,首先我使用 SQLitePlugin 创建了一个“demo.db”和一个表。

var myDb = window.sqlitePlugin.openDatabase("demo", "1.0", "my demo", 50000);
myDb.transaction(function(tx){
tx.executeSql('CREATE TABLE Projects (ProjectId integer primary key, ProjectCode varchar(20), ProjectDescription varchar(100 ))');
});

在此之后,我从/data/data/package_name/databases/导出这个创建的 .db。导出后,我将导出的 .db 文件粘贴到 eclipse 的 Assets 中。我按照 gautam 的建议将此文件导入 .../databases/文件夹:http://gauravstomar.blogspot.com/2011/08/prepopulate-sqlite-in-phonegap.html然后填充数据库的真正任务开始了:

   var myDb = window.sqlitePlugin.openDatabase("demo", "1.0", "my demo", 50000);
myDb.transaction(function(tx){
tx.executeSql('INSERT INTO Projects (ProjectCode, ProjectDescription) VALUES(?,?)',["Lastly", "fdgsdfgsdg"], function(tx, result){
alert("go");
hideLoading();
tx.executeSql('SELECT * FROM Projects',[],function(tx, result){
for (var i=0; i<result.rows.length; i++){
alert("Row = " + i + " ID = " + result.rows.item(i).ProjectId + "ProjectCode = " + result.rows.item(i).ProjectCode);
}
});
}, function(err) {
alert(err.message);
alert("Database is not created.");
hideLoading();
});
});

这里,sqlitePlugin 正在访问导入的“demo.db”,并将值插入到表 Projects 中。

关于android - 如何在 android 中使用 SQLitePlugin Cordova 填充数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23363263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com