Phonegap存储事务回调多次调用

时间:2013-06-20 21:49:56

标签: database transactions callback cordova indexeddb

我正在开发一个带有本地存储的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);

如果我删除了应用程序数据并再次启动,问题就会停止。 我不知道为什么会这样,任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

它是websql,而不是IndexedDB。

您的发现似乎是手机上的错误。

尝试在executeSql上收听错误和成功回调。通过收听成功回调,按顺序执行您的三个步骤。它应该解决问题。

多个数据库应该没问题。