tx.executeSql('DROP TABLE IF EXISTS DEMO');
Tento řádek výše smaže tabulku s názvem DEMO pokaždé, když spustíte mobilní aplikaci PhoneGap
A jen jsem vám chtěl říct, že miluji váš kód. Poskytuje velmi dobrou představu o tom, „co dělat“ pro aplikaci PhoneGap nebo Cordova. Výrazně pomůže každému, kdo vstupuje do světa SQLite poprvé.
Váš kód je velmi čistý na čtení a porozumění ve srovnání s kódy napsanými na oficiálních stránkách pluginu Cordova/PhoneGap SQLite na GitHubu.
Můj přítel, který také pracuje jako CTO jedné společnosti a má bohaté zkušenosti s SQLite, mi řekl, že není nutné ručně zavírat připojení k databázi SQLite, a také velmi doporučil SQLite.
A pro každého, kdo hledá SQLite pro informace PhoneGap/Cordova -
Řekněme, že máte tabulku s názvem mytable a chcete uložit hodnoty „beautiful“ a „delphin“
Když chcete provést operaci na SQLite mobilního zařízení, jako je tablet nebo telefon, nezapomeňte to nazvat tímto způsobem
Ve zdrojovém kódu mějte následující
function insertNewLine(tx)
{
tx.executeSql("INSERT INTO mytable (word, meaning) VALUES (?,?)", [ var1 , var2 ]);
}
a uložte "krásný" do var1 a "delfín" do var2 a
proveďte následující příkaz, abyste provedli příkaz SQL insert a poté jej uložili do zařízení.
db.transaction(insertNewLine);
Ne přímo zavolejte insertNewLine(tx)
Ne přímo zavolejte tx.executeSql( /* SQL INSERT STATEMENT */ ); ve zdrojovém kódu JavaScript
A ne zahrňte hodnoty přímo do příkazu SQL dotazu a poté spusťte příkaz SQL obsahující hodnoty, které chcete uložit do databáze.
Jinými slovy, následující text je nesprávný
tx.executeSql('INSERT INTO mytable (word, meaning) values (beautiful, dolphin)');
Výše uvedené je nesprávné, protože hodnoty, které chcete uložit, „krásný“ a „delfín“ jsou součástí příkazu SQL. Měli by být odděleni.
Následuje správný způsob, jak spustit 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
a poté proveďte celou transakci databáze zahrnutím následujícího do kódu JavaScript
db.transaction(insertNewLine);
nikoli níže uvedený kód
tx.executeSql("INSERT....."); // this will not save your values onto the device
ani kód níže
insertNewLine(tx); // this will not save your values onto the device either.
A chcete-li použít příkaz SELECT SQL, použijte následující kód
// 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);
}
A poté proveďte transakci databáze
db.transaction(viewthelastglory);
Pokud se pokoušíte vybrat jeden z SQLite, WebSQL a IndexedDB, nezapomeňte, že jsem chvíli hledal v stackoverflow a zjistil jsem, že
- Nikdo nemá rád IndexedDB kvůli jeho složitosti
- IndexedDB je nekompatibilní s mnoha typy a verzemi mobilních OS
- W3C již nepodporuje WebSQL
- WebSQL vrací 673 000 výsledků, ale SQLite vrací 1800 000 výsledků. IndexedDB vrací 300 000 výsledků na Googlu
- Mezi IndexedDB, SQLite a WebSQL je SQLite jediný s oficiálními webovými stránkami.
Následující příkaz na příkazovém řádku, když jste v adresáři vašeho projektu Cordova, nainstaluje plugin SQLite do vašeho projektu Cordova
cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin