【问题标题】:synchronizing executeSql in Safari (WebKit) Web Sql database在 Safari (WebKit) Web Sql 数据库中同步 executeSql
【发布时间】:2010-08-09 10:29:19
【问题描述】:

WebKit(Safari 4+ 是我的重点)有一个称为 Web SQL 的功能。 Web SQL 在the W3C draft 中指定。 目前仅支持异步风格。

我有一种情况,我想同步一些不同的操作 - 写入数据库(使用 CREATE TABLE 查询,然后循环通过 INSERT 查询),然后从数据库中读取。我该怎么做呢?我用谷歌搜索并阅读了很多教程,但没有找到任何解释。

如果我找不到答案,我会尝试 Worker 功能,如果不成功,我计划将数据存储在 webstorage (localstorage) 中。

【问题讨论】:

    标签: javascript sql html web-storage


    【解决方案1】:

    我已经在我的博客中为此编写了一个可能的解决方案。不知道这是否适合你的问题,但看看。 http://wander-mind.blogspot.com/2011/03/how-to-synchronize-html5-websql-with.html

    【讨论】:

      【解决方案2】:

      似乎没有人回答这个问题。我目前的理解是在本地存储中存储一个块是最好的

      【讨论】:

      • 有人有。派对可能有点晚了;)
      【解决方案3】:

      您通过成功回调链接操作。这样您就可以确定操作的顺序。请参阅this article 中提供的示例代码。

      您可以使用可用于事务对象或单个查询的回调,tx.executeSql(sql, [], callback, errorCallback)

      var sql_createTables = "CREATE .....",
        sql_inserts= "INSERT .....";
      
      function errorHandler(tx, error) { 
        //do error handling
      }
      
      db.transaction(
       function(tx){
        tx.executeSql(sql_createTables,[], function(tx, result){
           //The table was created
          tx.executeSql(sql_inserts,[], function(tx, result){
             // Inserts completed
          });
        },
        errorHandler);
       }, function(error) { alert("Oh, noes! The whole transaction failed!"); },
       function() { alert("Yeah, baby! We did it."); });
      

      WebWorker 与此无关,也不会以任何方式帮助您,因为 WebWorker 无法访问 DOM,其中 localStorageWebSql 是其中的一部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-23
        • 1970-01-01
        • 2014-08-26
        • 2016-12-21
        • 1970-01-01
        • 2021-07-01
        • 2012-05-08
        • 2019-01-30
        相关资源
        最近更新 更多