我有一个非常简单的应用程序(一个更大的应用程序的开头),它在这一点上做了一件事。它所做的只是创建一个新的数据库和表,并插入一行数据。问题是,当我在浏览器上点击“刷新”时,数据和表格就消失了。我正在使用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
功能。数据正确地显示在数据库中,但是当我刷新时,它就消失了。
答案 0 :(得分:0)
除非您运行drop table或delete query,否则您应该坚持使用数据。因此,在此代码中,只有重置点击处理程序的位置,尝试对其进行注释并查看数据是否保留。也许以某种方式触发点击事件而不是仅仅注册。
答案 1 :(得分:0)
Chrome 不会显示数据库,除非您通过 openDatabase
打开它们。数据库仍然存在,只是被隐藏了。您必须调用该函数才能确实显示您的数据库。