我已将“demo.db”文件复制到/ data / data / package_name / databases /,正如Gaurav建议的那样: 访问:http://gauravstomar.blogspot.com/2011/08/prepopulate-sqlite-in-phonegap.html
“demo.db”已经创建了表格(例如:项目)
我尝试使用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”,而是通过覆盖导入的db创建了新的数据库“demo.db”。执行插入代码时,它会抛出错误“错误:没有这样的表:项目”。因此,触发错误回调函数。请建议我解决我的问题。
答案 0 :(得分:0)
我找到了解决方案。对于我的情况,这是由于从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中的资源中。我将这个文件导入到... / databases /文件夹中,因为gautam建议: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中。