【发布时间】:2014-03-13 00:52:32
【问题描述】:
我正在构建一个我希望在设备上完全本地化的应用。我一直在寻找将数据存储在设备上的方法,而且似乎 WebSQL 在 iOS6+ 设备上是持久的。
我一直在查看有关 WebSQL 的文档,但对于如何将其添加到我的项目中感到有些困惑。
在他们拥有的文档中
function prepareDatabase(ready, error) {
return openDatabase('documents', '1.0', 'Offline document storage', 5*1024*1024, function (db){
db.changeVersion('', '1.0', function (t) {
t.executeSql('CREATE TABLE docids (id, name)');
}, error);
});
}
function showDocCount(db, span) {
db.readTransaction(function (t) {
t.executeSql('SELECT COUNT(*) AS c FROM docids', [], function (t, r) {
span.textContent = r.rows[0].c;
}, function (t, e) {
// couldn't read database
span.textContent = '(unknown: ' + e.message + ')';
});
});
}
prepareDatabase(function(db) {
// got database
var span = document.getElementById('doc-count');
showDocCount(db, span);
}, function (e) {
// error getting database
alert(e.message);
});
他们说“prepareDatabase”函数会检查数据库是否已经存在,但我看不到该检查在哪里,除非在数据库不存在的情况下 ONLY 调用回调存在,API 部分似乎暗示了这一点。
此外,如果数据库大小增长大于创建时提供的估计值,会发生什么情况?
另一个问题是如何持久化数据库?用户有一天早上打开应用程序并看到所有数据都消失了时会感到震惊吗?
一如既往,感谢您的帮助。
【问题讨论】: