我的数据库通过Phonegap存储在Android中的/data/data/package-name/app_datab
My database getting stored in /data/data/package-name/app_database/file__0/*.db in Android through Phonegap
我正在尝试将一些数据存储在我使用类似的phonegap创建的数据库中
document.addEventListener("deviceready", onDeviceReady, false);
function populateDB(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}
// Query the database
//
function queryDB(tx) {
tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}
// Query the success callback
//
function querySuccess(tx, results) {
var len = results.rows.length;
console.log("DEMO table: " + len + " rows found.");
for (var i=0; i<len; i++){
console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data = " + results.rows.item(i).data);
}
}
// Transaction error callback
//
function errorCB(err) {
console.log("Error processing SQL: "+err.code);
}
// Transaction success callback
//
function successCB() {
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(queryDB, errorCB);
}
// PhoneGap is ready
//
function onDeviceReady() {
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
}
但数据库尚未创建。。相反,它将其保存在/data/data/package name/app_database/file__0/00000000000000001.db 中
我想将数据保存在/data/data/package name/database.db 中
怎么做?
除非修改PhoneGap源代码,否则无法更改创建数据库的目录。我想一个更好的问题是,为什么要将数据保存在/data/data/package name/database/database.db中,而不是/data/ddata/package name]/app_database/file__0/00000000000000001.db中?
更新:现在我更好地理解了这个需求,唯一能做到这一点的方法就是为Android编写一个插件,将JavaScript端与本地Java端连接起来。然后,您可以打开并读取服务创建并填充的Java数据库。
Marc Murphy(CommonsWare)在这篇文章中阐述了原因。
请参阅:http://developer.android.com/guide/topics/data/data-storage.html#db和http://developer.android.com/guide/developing/tools/adb.html#sqlite.创建数据库时,可以指定数据库名称,并在/data/data/package name/databases/中创建一个带有.db的文件名。
很抱歉,您提供的代码没有显示数据库是如何创建的。
我建议您使用sqlite的LocalStorage来实现此目的。您可以参考本地存储,网址为:http://docs.phonegap.com/en/1.0.0/phonegap_storage_storage.md.html
示例:
localStorage.setItem("ItemName",yourItem);
localStorage.getItem("ItemName");
它提供了一种更好的方式来轻松有效地存储和检索数据。
正如文档所述,Phonegap并没有真正使用SQLite数据库,而是使用WebSQL实现或localStorage。
如果你想使用原生SQLite,看看这个插件,数据库操作的语法与Phonegap的Storage API几乎相同。
- Ember Data DS.Model's set函数不起作用
- Extending Ext.data.NodeInterface
- 如何将package.json数组传递给grunt.js
- AngularJS单选筛选不适用于Name、Description和Field4复选框值
- 未捕获的类型错误:无法读取属性'name'即使它存在,也无法定义
- 正在检测导航到<a name=“;最新主题”></a>
- 如何获取$data.Entity的密钥
- 为什么react/redux前端项目在package.json中包含生产依赖项
- jQuery可以't获取data-*属性值,返回undefined
- Query JS Ext.data.Store
- 骨干's Router.execute(callback,args,name)方法获取未定义的名称
- JavaScript,JQuery.需要帮助才能获得'name'从我的JSON中删除
- 设置'这'在React with Inverse Data Flow中
- 从 Javascript 中设置 ng-model name
- Jquery将data-rel属性添加到所有输入字段,并移除name属性
- 我的数据库通过Phonegap存储在Android中的/data/data/package-name/app_datab
- jQuery获取data-name作为值
- 未能使用data-name来匹配数组,尽管它应该匹配
- Bootstrap表Js中的data-sort-name是如何工作的
- Jquery ajax input[name=somename] val(data) -如何识别多个变量