我正在开发一个带有本地存储的 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);
如果我删除应用程序数据并再次启动,问题就会停止。我不知道为什么会发生这种情况,任何帮助将不胜感激。