¿Cómo compactar las instrucciones SQL en Cordova?

Estoy creando una pequeña aplicación que usará bases de datos, quiero saber cómo convertir esto:

function testDB() { var db = window.openDatabase("Database", "1.0", "mydatabase", 2000000); db.transaction(queryNames, errorDB); } function queryNames(tx) { tx.executeSql('SELECT name FROM people WHERE id=13', [], listNames, errorDB); } function listNames(tx, results) { for (var i=0;i<results.rows.length;i++) { alert(results.rows.item(i).name); } } function errorDB(err) { alert("Fatal error"); } 

A algo como esto (ya sea si es posible más compactado):

 function testDB() { var db = window.openDatabase("Database", "1.0", "mydatabase", 2000000); db.transaction(queryNames('SELECT name FROM people WHERE id=13'), errorDB); } function queryNames(tx, query) { tx.executeSql(, [], function listNames(tx, results) { for (var i=0;i<results.rows.length;i++) { alert(results.rows.item(i).name); } }, errorDB); } function errorDB(err) { alert("Fatal error"); } 

En pocas palabras, estoy tratando de “reciclar” el código. Gracias por leer.

2 Solutions collect form web for “¿Cómo compactar las instrucciones SQL en Cordova?”

La llamada a SQLite es un evento. He creado la siguiente función mediante jQuery (la función también registra los resultados en la consola, por lo que necesita el complemento de consola para trabajar):

 var db = window.openDatabase("Database", "1.0", "mydatabase", 2000000); function queryDB(query) { var start = Date.now(); var deferred = $.Deferred(); db.transaction(function (tx) { tx.executeSql(query, [], function (tx, results) { console.log("Rows: " + results.rows.length + " Time: " + (Date.now() - start) + "ms Query: " + query); deferred.resolve(results); }, function (error) { console.log("Error processing SQL: " + error.code + " " + error.no + " Query: " + query); }); }, function (error) { console.log("Transaction Error: " + error.code + " " + error.no + " Query: " + query); }); return deferred.promise(); } 

Y la llamada a la función es:

 $.when(queryDB("SELECT * FROM table")).done(function (results) { // Here your logic with the results }); 

La ventaja de esta forma es que puede llamar a varias consultas al mismo tiempo:

 $.when(queryDB("SELECT * FROM table1"), queryDB("SELECT * FROM table2")).done(function (results1, results2) { // Here your logic with the results }); 

Esto es lo que sugeriría. Cree un objeto de base de datos independiente que solo tenga un método de consulta genérico. De esa manera, puede reutilizarlo desde cualquier otro lugar en su aplicación. Algo como lo siguiente:

Aquí está el objeto de la base de datos:

 var DB = function () { this.db = window.openDatabase("Database", "1.0", "mydatabase", 2000000); }; DB.prototype.error = function () { alert("Fatal Error"); }; DB.prototype.query = function (query, callback) { this.db.transaction(function (tx) { tx.executeSql(query, [], function (tx, results) { callback(results); }); }, this.error); }; 

Y ahora puedes llamarlo para hacer tu consulta de nombres así:

 var myDB = new DB(); var namesQuery = 'SELECT name FROM people WHERE id=13'; myDB.query(namesQuery, function (results) { for (var i=0;i 

Este es solo un ejemplo básico. Es probable que desee agregar elementos adicionales para el manejo de errores / argumentos con nombre / etc.

Espero que esto ayude

  • La mejor práctica para almacenar datos localmente para la web
  • Cómo get el tamaño de almacenamiento html5 total utilizado por la aplicación actual
  • save una function en localstorage
  • hacer que localStorage o sessionStorage caduquen como cookies
  • ¿Cómo puedo usar el almacenamiento local HTML5 junto con PHP, usarlo para sesiones de php y almacenar otra información que use php?
  • localStorage - ¿usa getItem / setItem funciones o acceso a objects directamente?
  • Guarde y cargue la date localstorage
  • Almacenamiento local de dominio cruzado con iframes (Chrome)
  • ¿Cómo puedo serializar una function en JavaScript?
  • No se puede usar almacenamiento angular local
  • Almacenamiento de datos comprimidos json en almacenamiento local
  • Velocidad / costo de almacenamiento local
  • ¿Cómo / dónde almacenar datos en un script de Chrome Tampermonkey?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.