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