0

我正在开发一个带有本地存储的 Phonegap 2.5 应用程序,使用事务来执行数据库操作。麻烦的是,每隔一段时间,应用程序就会进入一个状态,即为同一事务多次调用事务回调。这是我如何执行事务的示例(调用 DbAccess 的保存功能时):

function DbAccess(db)
{
    this.db = db;

    this.save = function(data, callback)
    {
        alert('saving'); //called once
        this.db.transaction(function(tx){

            tx.executeSql('CREATE TABLE ...');
            tx.executeSql('DELETE FROM ...');
            tx.executeSql('INSERT INTO ...');

        }, function(error){ 
               //on error
               callback({
               "success" : false
               });
        }, function(){
               //on successs
               callback({
               "success" : true
               });
        });
    }
}

当应用程序进入此状态时,回调函数会被多次调用(通过成功回调函数的错误),虽然保存函数只被调用一次(警报只弹出一次)。我怀疑当应用程序创建多个数据库时会出现这些错误。我创建了一个数据库,其名称基于用于登录应用程序的用户名(用户名和实例变量是用户输入):

var dbName = username + '_' + instance;
var db = window.openDatabase(dbName, "1.0", "OfflineData", 1000000);

如果我删除应用程序数据并再次启动,问题就会停止。我不知道为什么会发生这种情况,任何帮助将不胜感激。

4

1 回答 1

0

它是 websql,而不是 IndexedDB。

您的发现似乎是 phonegap 上的错误。

尝试在executeSql. 通过监听成功回调按顺序执行您的三个步骤。它应该可以解决问题。

多个数据库应该没问题。

于 2013-06-21T03:04:57.317 回答