sql >> Database teknologi >  >> RDS >> SQLite

Lagring af SQLite-database ved hjælp af Android og Phonegap

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

Denne linje ovenfor sletter tabellen med navnet DEMO, hver gang du starter din PhoneGap-mobilapplikation

Og jeg ville bare fortælle dig, at jeg elsker din kode. Det giver et meget godt fingerpeg om "hvad man skal gøre" for enhvers PhoneGap- eller Cordova-applikation. Det vil i høj grad hjælpe alle, der er på vej ind i SQLite-verdenen for første gang.

Din kode er meget ren at læse og forstå sammenlignet med koderne skrevet på Cordova/PhoneGap SQLite plugin officielle hjemmeside på GitHub.

Min ven, som også arbejder som CTO for en virksomhed og har masser af erfaring med SQLite, fortalte mig, at det ikke er nødvendigt at lukke en SQLite-databaseforbindelse manuelt, og anbefalede også stærkt SQLite.

Og for alle andre, der leder efter SQLite til PhoneGap/Cordova-oplysninger -

Lad os sige, at du har en tabel med navnet mytable og vil gemme værdierne "beautiful" og "dolphin"

Når du vil udføre en handling på SQLite på en mobil enhed, såsom en tablet eller telefon, skal du huske at kalde det på denne måde

Hav følgende i din kildekode

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

og gem "smuk" inde i var1 og "delfin" inde i var2 og

udfør følgende sætning for at udføre SQL insert-sætningen og gem derefter inde i enheden.

db.transaction(insertNewLine);   

Gør det ikke ring direkte til insertNewLine(tx)

Gør det ikke kald direkte tx.executeSql( /* SQL INSERT STATEMENT */ ); i din JavaScript-kildekode

Og ikke inkludere værdierne direkte i SQL-forespørgselssætningen, og kør derefter SQL-sætningen, der indeholder de værdier, du vil gemme i databasen.

Med andre ord er følgende forkert

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

Ovenstående er forkert, fordi de værdier, du vil gemme, "beautiful" og "dolphin" er inkluderet i SQL-sætningen. De skal være adskilte.

Følgende er den korrekte måde at køre 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

og udfør derefter hele databasetransaktionen ved at inkludere følgende i din JavaScript-kode

db.transaction(insertNewLine);

ikke nedenstående kode

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

heller ikke nedenstående kode

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

Og for at bruge SELECT SQL-sætningen skal du have følgende kode

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

Udfør derefter databasetransaktionen

db.transaction(viewthelastglory);

Hvis du prøver at vælge en fra SQLite, WebSQL og IndexedDB, så husk, at jeg søgte rundt i stackoverflow i et stykke tid og fandt ud af, at

  • Ingen kan lide IndexedDB på grund af dets kompleksitet
  • IndexedDB er inkompatibel med mange typer og versioner af mobil OS
  • WebSQL er blevet forældet af W3C
  • WebSQL returnerer 673K ​​resultater, men SQLite returnerer 1800K resultater. IndexedDB returnerer 300.000 resultater på Google
  • Blandt IndexedDB, SQLite og WebSQL er SQLite den eneste med et officielt websted.

Den følgende kommando på kommandolinjen, mens du er i mappen til dit Cordova-projekt, vil installere SQLite-plugin'et i dit Cordova-projekt

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


  1. mysql trigger lagret trigger bruges allerede af sætningen, som påkaldte lagret trigger

  2. God praksis at åbne/lukke forbindelser i en asp.net-applikation?

  3. Opret en tabel i SQL Server 2017

  4. Gendan en SQL Server-database (T-SQL)