在Safari(WebKit)Web Sql数据库中同步executeSql

时间:2010-08-09 10:29:20

标签: javascript sql html5 web-storage

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

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

如果我找不到答案,我将尝试工作人员功能,如果不成功,我打算将数据存储在webstorage (localstorage)中。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

通过成功回调链接操作。这样你就可以确定操作的顺序。请参阅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是其中的一部分。