如何在Phonegap / Cordova中使用LocalStorage和SQLite数据库?

时间:2017-03-07 16:36:42

标签: sqlite cordova

我是使用Phonegap的新手,我尝试在应用关闭时创建一个可存储数组和设置首选项的应用。我正在考虑添加一个云保存功能,以便他们可以将数据保存到他们的Google驱动器或我自己的云中,我想我应该使用SQLite数据库吗?问题是我对SQLite数据库以及如何在JavaScript中使用它们知之甚少。如果我选择不使用云功能,您认为仅使用LocalStorage就足够了吗?

3 个答案:

答案 0 :(得分:0)

这是一个有效的例子。这会在页面加载时创建数据库表。

var db;
document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    db = window.openDatabase("DiaryDB", "1.0", "DiaryDB", 200000);
    db.transaction(createDB, transaction_error, createDB_success);
}

function createDB(tx) {
    tx.executeSql('DROP TABLE IF EXISTS DiaryTab');
    var sql = "CREATE TABLE IF NOT EXISTS DiaryTab ("
    + "EntryID INTEGER PRIMARY KEY AUTOINCREMENT, "
    + "EntryDate TEXT, " + "EntryTitle TEXT, " + "EntryContent Text"
    + ")";
    tx.executeSql(sql);
}

function transaction_error(tx, error) {
    alert("Database Error: " + error);
}

function createDB_success(){
    alert("Database and Table Created");
}

答案 1 :(得分:0)

这会插入一条新记录。只需更改SQL语句即可进行更新和删除。使用要插入的值填充entryDate,entryTitle和entryContent。

function insertRecord(tx){
        var insertString = "INSERT INTO DiaryTab (entryDate, entryTitle, entryContent) VALUES ('" 
        + entryDate + "','" 
        + entryTitle + "','" 
        + entryContent + "')";
        tx.executeSql(insertString);
    }

function saveEntry(){
    entryDate = $("#date").val();
    entryTitle = $("#title").val();
    entryContent = $("#contents").val();
    db.transaction(insertRecord, transaction_error, insert_success);
}

function transaction_error(tx, error) {
        alert("Database Error: " + error);
}

function insert_success(){
    alert("New Entry Inserted");
}

答案 2 :(得分:0)

localStorage NOT 保证是持久性的,尤其是在iOS上。您不应该在localStorage中存储任何不能在数据消失的情况下轻松重新创建或下载的内容。

有各种存储选项,其中使用SQLite插件只有一个。它们都不会实现云同步(除了在iDevices上通过iCloud备份)。你需要自己处理。您可能考虑PouchDB(不以任何方式附属),但也有很多其他选项。您还需要考虑此问题对安全和隐私的影响,并在您的隐私声明中将这些内容告知最终用户。