tx.executeSql('DROP TABLE IF EXISTS DEMO');
Ten wiersz powyżej usuwa tabelę o nazwie DEMO za każdym razem, gdy uruchamiasz aplikację mobilną PhoneGap
Chciałem tylko powiedzieć, że uwielbiam twój kod. Daje bardzo dobrą wskazówkę, „co zrobić” dla dowolnej aplikacji PhoneGap lub Cordova. To bardzo pomoże każdemu, kto pierwszy raz wchodzi do świata SQLite.
Twój kod jest bardzo przejrzysty do odczytania i zrozumienia w porównaniu z kodami napisanymi na oficjalnej stronie wtyczki Cordova/PhoneGap SQLite na GitHub.
Mój przyjaciel, który pracuje również jako CTO w firmie i ma duże doświadczenie z SQLite, powiedział mi, że nie jest konieczne ręczne zamykanie połączenia z bazą danych SQLite i bardzo polecał SQLite.
I dla każdego, kto szuka SQLite do informacji PhoneGap/Cordova -
Załóżmy, że masz tabelę o nazwie mytable i chcesz przechowywać wartości „piękne” i „delfiny”
Jeśli chcesz wykonać operację na SQLite urządzenia mobilnego, takiego jak tablet lub telefon, pamiętaj, aby nazwać to w ten sposób
Umieść następujące informacje w swoim kodzie źródłowym
function insertNewLine(tx)
{
tx.executeSql("INSERT INTO mytable (word, meaning) VALUES (?,?)", [ var1 , var2 ]);
}
i zapisz „beautiful” w var1 i „delphin” w var2 i
wykonaj poniższą instrukcję, aby wykonać instrukcję SQL INSERT, a następnie zapisz ją w urządzeniu.
db.transaction(insertNewLine);
Nie bezpośrednio wywołaj insertNewLine(tx)
Nie bezpośrednio wywołaj tx.executeSql( /* SQL INSERT STATEMENT */ ); w kodzie źródłowym JavaScript
I nie uwzględnij wartości bezpośrednio w zapytaniu SQL, a następnie uruchom instrukcję SQL zawierającą wartości, które chcesz przechowywać w bazie danych.
Innymi słowy, poniższe jest niepoprawne
tx.executeSql('INSERT INTO mytable (word, meaning) values (beautiful, dolphin)');
Powyższe jest niepoprawne, ponieważ wartości, które chcesz przechowywać, „piękne” i „dolphin”, są zawarte w instrukcji SQL. Powinny być oddzielne.
Poniżej przedstawiono prawidłowy sposób uruchamiania 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 następnie wykonaj całą transakcję bazy danych, umieszczając następujące elementy w kodzie JavaScript
db.transaction(insertNewLine);
nie poniższy kod
tx.executeSql("INSERT....."); // this will not save your values onto the device
nie do poniższego kodu
insertNewLine(tx); // this will not save your values onto the device either.
Aby użyć instrukcji SELECT SQL, przygotuj następujący 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);
}
A następnie wykonaj transakcję bazy danych
db.transaction(viewthelastglory);
Jeśli próbujesz wybrać jeden z SQLite, WebSQL i IndexedDB, pamiętaj, że przez chwilę szukałem w stosie przepełnienia i dowiedziałem się, że
- Nikt nie lubi IndexedDB ze względu na jego złożoność
- IndexedDB jest niekompatybilny z wieloma typami i wersjami mobilnego systemu operacyjnego
- WebSQL został wycofany przez W3C
- WebSQL zwraca 673 tys. wyników, ale SQLite zwraca 1800 tys. IndexedDB zwraca 300 000 wyników w Google
- Spośród IndexedDB, SQLite i WebSQL, SQLite jako jedyny posiada oficjalną stronę internetową.
Następujące polecenie w wierszu poleceń, gdy jesteś w katalogu swojego projektu Cordova, zainstaluje wtyczkę SQLite w twoim projekcie Cordova
cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin