tx.executeSql('DROP TABLE IF EXISTS DEMO');
Questa riga sopra elimina la tabella denominata DEMO ogni volta che avvii l'applicazione mobile PhoneGap
E volevo solo dirti che amo il tuo codice. Dà un ottimo indizio su "cosa fare" per l'applicazione PhoneGap o Cordova di chiunque. Aiuterà molto chiunque stia entrando per la prima volta nel mondo di SQLite.
Il tuo codice è molto pulito da leggere e capire rispetto ai codici scritti sul sito Web ufficiale del plug-in Cordova/PhoneGap SQLite su GitHub.
Il mio amico, che lavora anche come CTO di un'azienda e ha molta esperienza con SQLite, mi ha detto che non è necessario chiudere manualmente una connessione al database SQLite, e anche SQLite altamente raccomandato.
E per chiunque cerchi SQLite per informazioni su PhoneGap/Cordova -
Supponiamo che tu abbia una tabella denominata mytable e desideri memorizzare i valori "beautiful" e "dolphin"
Quando vuoi eseguire un'operazione sull'SQLite di un dispositivo mobile, come un tablet o un telefono, ricordati di chiamarla così
Avere quanto segue nel codice sorgente
function insertNewLine(tx)
{
tx.executeSql("INSERT INTO mytable (word, meaning) VALUES (?,?)", [ var1 , var2 ]);
}
e memorizza "beautiful" all'interno di var1 e "dolphin" all'interno di var2 e
eseguire l'istruzione seguente per eseguire l'istruzione di inserimento SQL e quindi salvare all'interno del dispositivo.
db.transaction(insertNewLine);
Non chiama direttamente insertNewLine(tx)
Non chiama direttamente tx.executeSql( /* SQL INSERT STATEMENT */ ); nel tuo codice sorgente JavaScript
E non includi i valori direttamente nell'istruzione di query SQL, quindi esegui l'istruzione SQL che include i valori che desideri archiviare nel database.
In altre parole, quanto segue è errato
tx.executeSql('INSERT INTO mytable (word, meaning) values (beautiful, dolphin)');
Quanto sopra non è corretto perché i valori che si desidera memorizzare, "beautiful" e "dolphin" sono inclusi nell'istruzione SQL. Dovrebbero essere separati.
Quello che segue è il modo corretto per eseguire 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
e quindi eseguire l'intera transazione del database includendo quanto segue nel codice JavaScript
db.transaction(insertNewLine);
non il codice seguente
tx.executeSql("INSERT....."); // this will not save your values onto the device
neanche il codice seguente
insertNewLine(tx); // this will not save your values onto the device either.
E per utilizzare l'istruzione SELECT SQL, avere il codice seguente
// 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);
}
E poi, esegui la transazione del database
db.transaction(viewthelastglory);
Se stai cercando di sceglierne uno da SQLite, WebSQL e IndexedDB, ricorda che ho cercato per un po' in StackOverflow e l'ho imparato
- A nessuno piace IndexedDB a causa della sua complessità
- IndexedDB non è compatibile con molti tipi e versioni di sistemi operativi mobili
- WebSQL è stato deprecato dal W3C
- WebSQL restituisce 673.000 risultati ma SQLite restituisce 1800.000 risultati. IndexedDB restituisce 300.000 risultati su Google
- Tra IndexedDB, SQLite e WebSQL, SQLite è l'unico con un sito web ufficiale.
Il seguente comando nella riga di comando mentre sei nella directory del tuo progetto Cordova installerà il plug-in SQLite nel tuo progetto Cordova
cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin