sql >> Base de Datos >  >> RDS >> SQLite

Almacenamiento de base de datos SQLite usando Android y Phonegap

tx.executeSql('DROP TABLE IF EXISTS DEMO');

Esta línea anterior elimina la tabla denominada DEMO cada vez que inicia su aplicación móvil PhoneGap

Y solo quería decirte que me encanta tu código. Da una muy buena pista sobre "qué hacer" para la aplicación PhoneGap o Cordova de cualquier persona. Será de gran ayuda para cualquiera que ingrese al mundo de SQLite por primera vez.

Su código es muy fácil de leer y comprender en comparación con los códigos escritos en el sitio web oficial del complemento SQLite de Cordova/PhoneGap en GitHub.

Mi amigo, que también trabaja como CTO de una empresa y tiene mucha experiencia con SQLite, me dijo que no es necesario cerrar una conexión de base de datos SQLite manualmente, y también me recomendó mucho SQLite.

Y para cualquier otra persona que busque información de SQLite para PhoneGap/Cordova -

Digamos que tiene una tabla llamada mytable y desea almacenar los valores "beautiful" y "dolphin"

Cuando desee realizar una operación en el SQLite de un dispositivo móvil, como una tableta o un teléfono, recuerde llamarlo de esta manera

Tenga lo siguiente en su código fuente

function insertNewLine(tx) 
{
   tx.executeSql("INSERT INTO mytable (word, meaning) VALUES (?,?)", [ var1 , var2 ]);
}

y almacene "hermoso" dentro de var1 y "delfín" dentro de var2 y

haga la siguiente declaración para ejecutar la declaración de inserción SQL y luego guárdela dentro del dispositivo.

db.transaction(insertNewLine);   

No llame directamente a insertNewLine(tx)

No llame directamente a tx.executeSql( /* SQL INSERT STATEMENT */ ); en su código fuente de JavaScript

Y no incluya los valores directamente en la instrucción de consulta SQL y luego ejecute la instrucción SQL que incluye los valores que desea almacenar en la base de datos.

En otras palabras, lo siguiente es incorrecto

tx.executeSql('INSERT INTO mytable (word, meaning) values (beautiful, dolphin)');

Lo anterior es incorrecto porque los valores que desea almacenar, "hermoso" y "delfín" están incluidos dentro de la instrucción SQL. Deben estar separados.

La siguiente es la forma correcta de ejecutar INSERT SQL

tx.executeSql("INSERT INTO mytable (word, meaning) VALUES (?,?)", [ var1 , var2 ]);
 // Notice that the values you want to store, beautiful and dolphin
 // are separate from the SQL INSERT INTO statement

y luego realice toda la transacción de la base de datos incluyendo lo siguiente en su código JavaScript

db.transaction(insertNewLine);

no el siguiente código

tx.executeSql("INSERT....."); // this will not save your values onto the device

tampoco el siguiente código

insertNewLine(tx); // this will not save your values onto the device either.  

Y para usar la instrucción SELECT SQL, tenga el siguiente código

// Get all lines in the table
//
function viewthelastglory(tx)  
{
    tx.executeSql( 'SELECT * FROM CUSTOMTABLE', [], querySuccess, errorcode );
}

// Deal with the lines 
//
function querySuccess(tx, results) 
{
   var len = results.rows.length; var  queryresult = "all entries ";

   for (var i = 0 ; i < len ; i++)
   {
       queryresult =  queryresult +  

       " Row - " + i + 
       " Word - " + results.rows.item(i).word + 
       " Meaning - " + results.rows.item(i).meaning;
   }

// and now, you can use the queryresult variable to use the values   
}

function errorcode(errorhaha) 
{
    alert("Error Code " + errorhaha.code + " Error Message " + errorhaha.message);
}

Y luego, realice la transacción de la base de datos

db.transaction(viewthelastglory);

Si está tratando de elegir uno de SQLite, WebSQL e IndexedDB, recuerde que busqué en stackoverflow por un tiempo y aprendí que

  • A nadie le gusta IndexedDB debido a su complejidad
  • IndexedDB es incompatible con muchos tipos y versiones de sistemas operativos móviles
  • W3C ha desaprobado WebSQL
  • WebSQL devuelve 673 000 resultados, pero SQLite devuelve 1800 000 resultados. IndexedDB devuelve 300 000 resultados en Google
  • Entre IndexedDB, SQLite y WebSQL, SQLite es el único con un sitio web oficial.

El siguiente comando en la línea de comando mientras está en el directorio de su proyecto Cordova instalará el complemento SQLite en su proyecto Cordova

cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin