0

私は、datajsを使用してODataからデータを取得し、それをsqliteに保存するphonegapでアプリを開発しています。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_ERRSQLiteエラーではありません。

SincronizarClientes()ODataコールバック関数は、が戻った後に非同期で実行されるため、トランザクションtxはすでに閉じられていると思います。

代わりに、コールdb.transaction()バック関数内で呼び出します。

于 2012-09-08T09:31:29.663 に答える