SQLite
 sql >> Base de données >  >> RDS >> SQLite

Stockage de la base de données SQLite en utilisant Android et Phonegap

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

Cette ligne ci-dessus supprime la table nommée DEMO chaque fois que vous démarrez votre application mobile PhoneGap

Et je voulais juste vous dire que j'adore votre code. Il donne un très bon indice sur "ce qu'il faut faire" pour l'application PhoneGap ou Cordova de n'importe qui. Cela aidera grandement tous ceux qui entrent dans le monde de SQLite pour la première fois.

Votre code est très propre à lire et à comprendre par rapport aux codes écrits sur le site officiel du plugin Cordova/PhoneGap SQLite sur GitHub.

Mon ami, qui travaille également en tant que CTO d'une entreprise et qui a beaucoup d'expérience avec SQLite, m'a dit qu'il n'est pas nécessaire de fermer manuellement une connexion à la base de données SQLite, et a également fortement recommandé SQLite.

Et pour tous ceux qui recherchent des informations sur SQLite pour PhoneGap/Cordova -

Supposons que vous ayez une table nommée mytable et que vous souhaitiez stocker les valeurs "beautiful" et "dolphin"

Lorsque vous souhaitez effectuer une opération sur le SQLite d'un appareil mobile, comme une tablette ou un téléphone, n'oubliez pas de l'appeler ainsi

Avoir ce qui suit dans votre code source

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

et stockez "beautiful" à l'intérieur de var1 et "dolphin" à l'intérieur de var2 et

faites l'instruction suivante afin d'exécuter l'instruction d'insertion SQL, puis enregistrez à l'intérieur de l'appareil.

db.transaction(insertNewLine);   

Ne pas appeler directement insertNewLine(tx)

Ne pas appeler directement tx.executeSql( /* SQL INSERT STATEMENT */ ); dans votre code source JavaScript

Et ne le faites pas incluez les valeurs directement dans l'instruction de requête SQL, puis exécutez l'instruction SQL qui inclut les valeurs que vous souhaitez stocker dans la base de données.

En d'autres termes, ce qui suit est incorrect

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

Ce qui précède est incorrect car les valeurs que vous souhaitez stocker, "beautiful" et "dolphin" sont incluses dans l'instruction SQL. Ils devraient être séparés.

Ce qui suit est la bonne façon d'exécuter le SQL INSERT

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

puis effectuez l'intégralité de la transaction de base de données en incluant ce qui suit dans votre code JavaScript

db.transaction(insertNewLine);

pas le code ci-dessous

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

pas le code ci-dessous non plus

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

Et pour utiliser l'instruction SQL SELECT, ayez le code suivant

// 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);
}

Et ensuite, effectuez la transaction de base de données

db.transaction(viewthelastglory);

Si vous essayez d'en choisir un parmi SQLite, WebSQL et IndexedDB, n'oubliez pas que j'ai cherché autour de stackoverflow pendant un certain temps et j'ai appris que

  • Personne n'aime IndexedDB en raison de sa complexité
  • IndexedDB est incompatible avec de nombreux types et versions d'OS mobiles
  • WebSQL est obsolète par le W3C
  • WebSQL renvoie 673 000 résultats, mais SQLite renvoie 1 800 000 résultats. IndexedDB renvoie 300 000 résultats sur Google
  • Parmi IndexedDB, SQLite et WebSQL, SQLite est le seul à disposer d'un site Web officiel.

La commande suivante en ligne de commande lorsque vous êtes dans le répertoire de votre projet Cordova installera le plugin SQLite dans votre projet Cordova

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