【问题标题】:Phonegap - get if database already existPhonegap - 获取数据库是否已经存在
【发布时间】:2013-10-18 11:52:57
【问题描述】:

我正在使用带有 Phonegap 的数据库。我需要知道数据库是否已经创建。如果数据库已经存在,我试图避免整个创建表和插入行功能。

var db = window.openDatabase("Database", "1.0", "FiltersResults", 50000000);

这会打开/创建我的数据库,好的,但是我怎么知道这个数据库是否已经存在?

【问题讨论】:

    标签: android database cordova exists


    【解决方案1】:

    var db = window.openDatabase("myDB", "1.0", "FiltersResults", 50000000); 检查您是否有一个名为myDB 的数据库,如果存在,它会打开它。如果没有,它会创建一个并打开它。因此,如果您看到它创建多个数据库,以下可能是我能想到的两个原因

    • 您有多个运行该 URL 的窗口,只需完全退出浏览器并使用该 URL 打开一个窗口
    • 是 Safari 5.1.2 中引入的已知 UI 相关错误,已在后续版本中修复。

    【讨论】:

      【解决方案2】:

      查看文档:http://docs.phonegap.com/en/3.0.0/cordova_storage_storage.md.html#Storage

      function populateDB(tx) {
          tx.executeSql('DROP TABLE IF EXISTS DEMO');
          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")');
      }
      
      function errorCB(err) {
          alert("Error processing SQL: "+err.code);
      }
      
      function successCB() {
          alert("success!");
      }
      
      var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
      db.transaction(populateDB, errorCB, successCB);
      

      【讨论】:

      • 我已经这样做了,但我需要知道数据库是否存在,而不是表。如果数据库已经存在,那就意味着代码块已经运行了,为什么还要运行呢?
      • 每次页面加载打开一次数据库,然后对其进行操作。无论如何,您不应该需要在每页上多次运行 window.openDatabase ,对吗?所以不需要检查它是否存在。
      • @SamThompson:如果我转到另一个页面并返回该页面或终止应用程序并再次运行它,那么如何检索已经创建的数据库。这就是问题所在。
      猜你喜欢
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多