Ответ 1
tx.executeSql('DROP TABLE IF EXISTS DEMO');
Эта строка выше удаляет таблицу с именем DEMO при каждом запуске мобильного приложения PhoneGap.
И я просто хотел сказать, что мне нравится ваш код. Это дает очень хорошее представление о том, "что делать" для любого приложения PhoneGap или Cordova. Это очень поможет любому, кто впервые войдет в мир SQLite.
Ваш код очень чистый, чтобы читать и понимать по сравнению с кодами, написанными на официальном сайте плагина Cordova/PhoneGap SQLite на GitHub.
Мой друг, который также работает техническим директором компании и имеет большой опыт работы с SQLite, сказал мне, что нет необходимости закрывать соединение базы данных SQLite вручную, а также очень рекомендуется SQLite.
И для всех, кто ищет SQLite для информации о PhoneGap/Cordova -
Скажем, у вас есть таблица с именем mytable и хотите хранить значения "красивый" и "дельфин"
Если вы хотите выполнить операцию на SQLite мобильного устройства, например, планшета или телефона, не забудьте вызвать его таким образом
В исходном коде есть следующее:
function insertNewLine(tx)
{
tx.executeSql("INSERT INTO mytable (word, meaning) VALUES (?,?)", [ var1 , var2 ]);
}
и сохраните "красивые" внутри var1 и "дельфин" внутри 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)');
Это неверно, потому что значения, которые вы хотите сохранить, "красивые" и "дельфины" включены в инструкцию 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