【问题标题】:How to use LocalStorage and SQLite Databases with Phonegap/Cordova?如何在 Phonegap/Cordova 中使用 LocalStorage 和 SQLite 数据库?
【发布时间】:2017-03-08 01:54:43
【问题描述】:

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

【问题讨论】:

    标签: sqlite cordova


    【解决方案1】:

    这是一个工作示例。这会在页面加载时创建数据库表。

    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");
    }
    

    【讨论】:

      【解决方案2】:

      这会插入一条新记录。只需更改 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");
      }
      

      【讨论】:

        【解决方案3】:

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

        有多种存储选项,使用 SQLite 插件只是其中之一。它们都不会实现云同步(除了在 iDevices 上由 iCloud 备份)。你需要自己处理。您可能考虑PouchDB(不以任何方式附属),但也有很多其他选择。您还需要考虑这对安全和隐私的影响,并在您的隐私声明中向最终用户明确说明。

        【讨论】:

          猜你喜欢
          • 2012-10-19
          • 1970-01-01
          • 1970-01-01
          • 2013-04-15
          • 2015-07-24
          • 1970-01-01
          • 1970-01-01
          • 2011-10-02
          • 2014-12-29
          相关资源
          最近更新 更多