Cuando se ejecuta el método SQLTransaction.executeSql
se llamara a esta función ‘callback’ pasándole el resultado de la consulta.
SQLResultSet
inserto en la base de datos.SQLResultSetRowList
representando la fila retornada. Si no se retorno ninguna, este objeto estará vacio.Cuando llamas al método SQLTransaction.executeSql
, esta función sera llamada pasándole un objeto SQLResultSet. Este objeto tendrá tres atributos, el primero (insertId
) retornara el numero de fila de una sentencia ‘insert’ satisfactoria. Si la sentencia SQL no fuera una sentencia ‘insert’, este atributo no sera establecido. El atributo rowAffected
es siempre 0 para una sentencia SQL de tipo ‘select’. Para sentencias ‘insert’ o ‘update’ retornara el numero de filas que fueron afectadas. El ultimo atributo es de tipo SQLResultSetList
y contiene los datos retornados por una sentencia SQL de tipo ‘select’.
function queryDB(tx) { tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB); } function querySuccess(tx, results) { // debería estar vacio ya que se inserto nada console.log("ID insert = " + results.insertId); // Sera 0 debido que es una sentencia SQL de tipo 'select' console.log("Filas afectadas = " + results.rowAffected); // El numero de filas retornadas console.log("Filas retornadas = " + results.rows.length); } function errorCB(err) { alert("Error procesando SQL: "+err.code); } var db = window.openDatabase("Database", "1.0", "Demo PhoneGap", 200000); db.transaction(queryDB, errorCB);
<!DOCTYPE html> <html> <head> <title>Ejemplo de Storage</title> <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> <script type="text/javascript" charset="utf-8"> // Espere a que PhoneGap se inicie // document.addEventListener("deviceready", onDeviceReady, false); // Componemos la base de datos // function populateDB(tx) { tx.executeSql('DROP TABLE IF EXISTS DEMO'); tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)'); tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "Primera fila")'); tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Segunda fila")'); } // Consultamos la base de datos // function queryDB(tx) { tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB); } // Función 'callback' con el resultado de la consulta // function querySuccess(tx, results) { // debería estar vacio ya que se inserto nada console.log("ID insert = " + results.insertId); // Sera 0 debido que es una sentencia SQL de tipo 'select' console.log("Filas afectadas = " + results.rowAffected); // El numero de filas retornadas console.log("Filas retornadas = " + results.rows.length); } // Función 'callback' de error // function errorCB(err) { console.log("Error procesando SQL: "+err.code); } // Función 'callback' de transacción satisfactoria // function successCB() { var db = window.openDatabase("Database", "1.0", "Demo PhoneGap", 200000); db.transaction(queryDB, errorCB); } // PhoneGap esta lista // function onDeviceReady() { var db = window.openDatabase("Database", "1.0", "Demo PhoneGap", 200000); db.transaction(populateDB, errorCB, successCB); } </script> </head> <body> <h1>Ejemplo</h1> <p>Database</p> </body> </html>