0

我正在 phonegap 中开发一个应用程序,它使用 datajs 从 OData 获取数据并将其保存到 sqlite。datajs 工作正常,但是当我尝试将数据保存到 sqlite 时,我收到错误“E/Web Console(11533): Uncaught Error: INVALID_STATE_ERR: DOM Exception 11 at file:///android_asset/www/js/core/Sincronizacion. js:19"

这是代码:

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() {

}
4

1 回答 1

1

INVALID_STATE_ERR不是SQLite 错误

我猜你的 OData 回调函数是异步运行的,在SincronizarClientes()返回之后,所以事务tx已经关闭。

db.transaction()而是在回调函数内部调用。

于 2012-09-08T09:31:29.663 回答