【问题标题】:Implementing WebSQL into iOS 6+ / Android 4+ LOCAL-ONLY App在 iOS 6+ / Android 4+ 本地应用程序中实现 WebSQL
【发布时间】: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 部分似乎暗示了这一点。

此外,如果数据库大小增长大于创建时提供的估计值,会发生什么情况?

另一个问题是如何持久化数据库?用户有一天早上打开应用程序并看到所有数据都消失了时会感到震惊吗?

一如既往,感谢您的帮助。

【问题讨论】:

    标签: ios cordova web-sql


    【解决方案1】:

    打开 websql 数据库很复杂。模式是您永远不会在 openDatabase 上指定版本。但相反,让他们打开任何东西,如果版本不是1.0,那么你将changeVersion 改为1.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多