2012-09-07 73 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

相关问题