2013-06-20 50 views
0

我正在開發具有本地存儲的Phonegap 2.5應用程序,使用事務來執行數據庫操作。麻煩的是,應用程序每過一段時間都會進入一個狀態,在該狀態下,對於同一事務,多次調用事務回調函數。這是我如何進行交易(當DBACCESS的保存函數被調用)的例子:通過成功的回調錯誤多次調用Phonegap存儲事務回調

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); 

如果我刪除應用程序數據並再次啓動,問題停止。 我不知道爲什麼發生這種情況,任何幫助將不勝感激。

+0

更正了您的標記,因爲這是IndexedDB,而非localStorage – K3N

回答

0

它是websql,而不是IndexedDB。

你的發現看起來像一個手機上的錯誤。

嘗試聽取錯誤併成功回調executeSql。通過監聽成功回調來執行你的三個步驟。它應該解決問題。

多個數據庫應該沒問題。

+0

將Phonegap升級到版本2.9後的事件仍然存在,但是,似乎您的解決方案設法解決問題,謝謝。 – djed