2012-09-07 32 views
0

我正在開發一個phonegap應用程序,它使用datajs從OData獲取數據並將其保存到sqlite。 datajs工作正常,但是當我嘗試將數據保存到sqlite時,出現錯誤「E/Web控制檯(11533):未捕獲錯誤:INVALID_STATE_ERR:DOM異常11在file:/// android_asset/www/js/core/Sincronizacion的.js:19"使用datajs從OData獲取數據並保存到手機中的sqlite

這是代碼:

function SincronizarClientes() // This function runs after a button click 
{ 
    var db = window.openDatabase("TestDb", "1.0", "TestDb - 1", 2000000); 
    db.transaction(ActualizarClientes, FalloSincronizacion, OkSincronizacion); 
} 


function ActualizarClientes(tx) 
{ 

    OData.read("http://192.168.0.4:30003/TeyunaServices.svc/Clientes?$filter=EQUIPO eq 'T1' and startswith(NOM_UCLIENTE, 'MIGUEL') eq true", 
    function (data, request) { 
     var html = "", sql = ""; 
     for (var i = 0; i < data.results.length; i++) { 
      html += "<div>" + data.results[i].NOM_UCLIENTE + "</div>"; 
      sql = "INSERT OR REPLACE INTO Clientes (Cod_UCliente, Nom_UCliente, Fecha_Actualizacion) VALUES ('" + data.results[i].COD_UCLIENTE + 
          "','" + data.results[i].NOM_UCLIENTE + "', datetime())"; 
      //sql = "INSERT OR REPLACE INTO Clientes (Cod_UCliente, Nom_UCliente, Fecha_Actualizacion) VALUES ('00012125', 'PEDRO PEREZ PINTO', datetime())";    
      tx.executeSql(sql); //This is line 19 
      alert(sql); 
     } 
     document.getElementById("mainContent").innerHTML = sql; 

     alert("Los clientes se actualizaron correctamente!"); 
    }, function(err) { 
      alert("Error occurred " + err.message); 
     } 
    ); 
} 

// Transaction error callback 
//  
function FalloSincronizacion(tx, err) { 
    alert("Error actualizando los clientes: " + err); 
} 

// Transaction success callback 
// 
function OkSincronizacion() { 

} 

回答

1

INVALID_STATE_ERR一個SQLite錯誤。

我猜你的OData回調函數是異步運行的,SincronizarClientes()已經返回,所以事務tx已經關閉。

改爲在回調函數中調用db.transaction()

+0

非常感謝你,它的工作。 – George

相關問題