我的数据库通过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

本文关键字:data package-name app datab 中的 Android 数据库 Phonegap 存储 我的      更新时间:2023-09-26

我正在尝试将一些数据存储在我使用类似的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几乎相同。