tx.executeSql('DROP TABLE IF EXISTS DEMO');
Този ред по-горе изтрива таблицата с име DEMO всеки път, когато стартирате мобилното си приложение PhoneGap
И просто исках да ви кажа, че харесвам кода ви. Той дава много добра представа за това "какво да правя" за нечие приложение PhoneGap или Cordova. Това ще помогне много на всеки, който влиза в света на SQLite за първи път.
Вашият код е много чист за четене и разбиране в сравнение с кодовете, написани на официалния уебсайт на приставката Cordova/PhoneGap SQLite на GitHub.
Моят приятел, който също работи като главен технически директор на компания и има богат опит със SQLite, ми каза, че не е необходимо да затварям ръчно връзка с база данни на SQLite и също силно препоръча SQLite.
И за всеки друг, който търси SQLite за информация за PhoneGap/Cordova -
Да приемем, че имате таблица с име mytable и искате да съхранявате стойности "beautiful" и "dolphin"
Когато искате да извършите операция на SQLite на мобилно устройство, като таблет или телефон, не забравяйте да го извикате по този начин
Имайте следното в изходния си код
function insertNewLine(tx)
{
tx.executeSql("INSERT INTO mytable (word, meaning) VALUES (?,?)", [ var1 , var2 ]);
}
и съхранявайте "beautiful" във var1 и "dolphin" във var2 и
направете следния оператор, за да изпълните SQL инструкцията за вмъкване и след това запишете в устройството.
db.transaction(insertNewLine);
Не директно извикайте insertNewLine(tx)
Не директно извикайте tx.executeSql( /* SQL INSERT STATEMENT */ ); във вашия изходен код на JavaScript
И не включете стойностите направо в оператора SQL заявка и след това изпълнете SQL израза, който включва стойностите, които искате да съхраните в базата данни.
С други думи, следното енеправилно
tx.executeSql('INSERT INTO mytable (word, meaning) values (beautiful, dolphin)');
Горното е неправилно, защото стойностите, които искате да съхраните, "beautiful" и "delphin" са включени в SQL израза. Те трябва да са отделни.
По-долу е правилният начин за стартиране на 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
и след това извършете цялата транзакция на базата данни, като включите следното във вашия JavaScript код
db.transaction(insertNewLine);
не кодът по-долу
tx.executeSql("INSERT....."); // this will not save your values onto the device
не и кодът по-долу
insertNewLine(tx); // this will not save your values onto the device either.
И за да използвате оператора SELECT SQL, имайте следния код
// 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);
}
След това извършете транзакцията на базата данни
db.transaction(viewthelastglory);
Ако се опитвате да изберете един от SQLite, WebSQL и IndexedDB, моля, не забравяйте, че търсих около stackoverflow известно време и научих, че
- Никой не харесва IndexedDB поради неговата сложност
- IndexedDB е несъвместим с много типове и версии на мобилна операционна система
- WebSQL е отхвърлен от W3C
- WebSQL връща 673K резултати, но SQLite връща 1800K резултати. IndexedDB връща 300K резултати в Google
- Сред IndexedDB, SQLite и WebSQL, SQLite е единственият с официален уебсайт.
Следната команда в командния ред, докато сте в директорията на вашия проект Cordova, ще инсталира приставката SQLite във вашия проект Cordova
cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin