tx.executeSql('DROP TABLE IF EXISTS DEMO');
Den här raden ovan tar bort tabellen med namnet DEMO varje gång du startar din PhoneGap-mobilapplikation
Och jag ville bara säga att jag älskar din kod. Det ger en mycket bra ledtråd om "vad man ska göra" för någons PhoneGap- eller Cordova-applikation. Det kommer till stor hjälp för alla som är på väg in i SQLites värld för första gången.
Din kod är mycket ren att läsa och förstå jämfört med koderna skrivna på Cordova/PhoneGap SQLite-plugins officiella webbplats på GitHub.
Min vän, som också arbetar som CTO för ett företag och har en hel del erfarenhet av SQLite, sa till mig att det inte är nödvändigt att stänga en SQLite-databasanslutning manuellt, och rekommenderade också starkt SQLite.
Och för alla andra som letar efter SQLite för PhoneGap/Cordova-information -
Låt oss säga att du har en tabell som heter mytable och vill lagra värdena "vacker" och "delfin"
När du vill utföra en operation på SQLite på en mobil enhet, till exempel en surfplatta eller telefon, kom ihåg att kalla det så här
Ha följande i din källkod
function insertNewLine(tx)
{
tx.executeSql("INSERT INTO mytable (word, meaning) VALUES (?,?)", [ var1 , var2 ]);
}
och lagra "vacker" inuti var1 och "delfin" inuti var2 och
gör följande sats för att köra SQL insert-satsen och spara sedan inuti enheten.
db.transaction(insertNewLine);
Gör inte anrop direkt insertNewLine(tx)
Gör inte anrop direkt tx.executeSql( /* SQL INSERT STATEMENT */ ); i din JavaScript-källkod
Och inte inkludera värdena direkt i SQL-frågesatsen och kör sedan SQL-satsen som innehåller de värden du vill lagra i databasen.
Med andra ord är följande felaktigt
tx.executeSql('INSERT INTO mytable (word, meaning) values (beautiful, dolphin)');
Ovanstående är felaktigt eftersom värdena du vill lagra, "beautiful" och "dolphin" ingår i SQL-satsen. De bör vara separata.
Följande är det korrekta sättet att köra 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
och utför sedan hela databastransaktionen genom att inkludera följande i din JavaScript-kod
db.transaction(insertNewLine);
inte koden nedan
tx.executeSql("INSERT....."); // this will not save your values onto the device
inte koden nedan heller
insertNewLine(tx); // this will not save your values onto the device either.
Och för att använda SELECT SQL-satsen, ha följande kod
// 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);
}
Och utför sedan databastransaktionen
db.transaction(viewthelastglory);
Om du försöker välja en från SQLite, WebSQL och IndexedDB, kom ihåg att jag sökte runt stackoverflow ett tag och fick reda på att
- Ingen gillar IndexedDB på grund av dess komplexitet
- IndexedDB är inkompatibelt med många typer och versioner av mobilt operativsystem
- WebSQL har fasats ut av W3C
- WebSQL returnerar 673 000 resultat men SQLite returnerar 1 800 000 resultat. IndexedDB returnerar 300 000 resultat på Google
- Bland IndexedDB, SQLite och WebSQL är SQLite den enda med en officiell webbplats.
Följande kommando på kommandoraden när du är i katalogen för ditt Cordova-projekt kommer att installera SQLite-plugin-programmet i ditt Cordova-projekt
cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin