WebSQL和jQuery - DB在刷新时消失

时间:2014-02-12 03:59:24

标签: web-sql

我有一个非常简单的应用程序(一个更大的应用程序的开头),它在这一点上做了一件事。它所做的只是创建一个新的数据库和表,并插入一行数据。问题是,当我在浏览器上点击“刷新”时,数据和表格就消失了。我正在使用Chrome和开发人员检查工具来查看WebSQL表中的数据。

以前有人这么做过吗?我究竟做错了什么?我认为HTML5的重点是持久数据,所以即使刷新数据库也应该坚持下去。我错了吗?

这是我的简单代码:

的index.html

  <div data-role="main" class="ui-content">
    <h2>Hello</h2>
    <button id="deviceReady">Device Ready</button>
    <button id="resetSQL">Reset SQL</button>
  </div>

然后是一些jQuery:

$(document).ready(function() {
  $("#deviceReady").click(function(){
    alert("device ready");
    initDB();
  });

  $("#resetSQL").click(function () {
    var db = openDatabase(dbName, dbTitle, dbVersion, dbMaxSize);
    db.transaction(function(tx) {
      tx.executeSql('DROP TABLE IF EXISTS creds');
      tx.executeSql('DROP TABLE IF EXISTS foo');
    });
  });
});

实际数据库资料

function initDB() {
  var db = openDatabase(dbName, dbTitle, dbVersion, dbMaxSize);
  db.transaction(function(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS creds (id unique, usr, psw)');
    tx.executeSql('INSERT INTO creds (id, usr, psw) VALUES (1, "none", "none")');
  });
}

所以我只需打开网页,点击“设备就绪”按钮即可运行initDB功能。数据正确地显示在数据库中,但是当我刷新时,它就消失了。

2 个答案:

答案 0 :(得分:0)

除非您运行drop table或delete query,否则您应该坚持使用数据。因此,在此代码中,只有重置点击处理程序的位置,尝试对其进行注释并查看数据是否保留。也许以某种方式触发点击事件而不是仅仅注册。

答案 1 :(得分:0)

Chrome 不会显示数据库,除非您通过 openDatabase 打开它们。数据库仍然存在,只是被隐藏了。您必须调用该函数才能确实显示您的数据库。