Моя база данных хранится в /data/data/package-name/app_database/file__0/*.db в Android через Phonegap - PullRequest
3 голосов
/ 13 февраля 2012

Я пытаюсь сохранить некоторые данные в базе данных, которую я создаю, используя 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/Database.db

Как это сделать?

Ответы [ 4 ]

1 голос
/ 13 февраля 2012

Вы не можете изменить каталог, в котором создана база данных, если вы не измените исходный код PhoneGap. Наверное, лучше задать вопрос: почему вы хотите сохранить данные в /data/data/package-name/database/Database.db вместо /data/data/package-name/app_database/file__0/00000000000000001.db?

Обновление : Теперь, когда я лучше понимаю это требование, единственный способ, которым вы сможете это сделать, - написать плагин для Android , который соединяет сторону JavaScript с нативная сторона Java. Затем вы можете открыть и прочитать базу данных на Java, которую создал и заполнил ваш сервис.

Марк Мерфи (CommonsWare) объясняет, почему в этой теме .

0 голосов
/ 01 ноября 2013

Как указано в документации , Phonegap на самом деле не использует базу данных SQLite, а использует реализацию WebSQL или localStorage.

Если вы хотите использовать собственный SQLite, взгляните на этот плагин , синтаксис для операций с базой данных почти такой же, как и для API хранилища Phonegap.

0 голосов
/ 10 апреля 2013

Я бы посоветовал вам использовать LocalStorage instread sqlite для этой цели.Вы можете обратиться к Локальное хранилище по адресу: http://docs.phonegap.com/en/1.0.0/phonegap_storage_storage.md.html

Пример :

localStorage.setItem("ItemName",yourItem);

localStorage.getItem("ItemName");

Это обеспечивает лучший способ легко и эффективно хранить и извлекать данные

0 голосов
/ 13 февраля 2012

См .: http://developer.android.com/guide/topics/data/data-storage.html#db и http://developer.android.com/guide/developing/tools/adb.html#sqlite. При создании базы данных вы можете указать имя базы данных, а имя файла с расширением .db будет создано в / data / data / имя пакета / database / .

Извините, но предоставленный вами код не показывает, как была создана база данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...