Моя проблема заключается в следующем: я создаю базу данных sqlite с помощью Javascript в моем приложении Phonegap-app и получаю следующую информацию из eclipse (LogCat): sqlite возвращен: код ошибки 14, msg = can not открыть файл в источнике 25467Ошибка базы данных приложения Android Phonegap
Это, как я инициализировать дб (отлично работает):
function initDB() {
try {
if (!window.openDatabase) {
alert('doesn't work!');
} else {
var shortName = 'name';
var version = '1.0';
var displayName = 'displayname';
var maxSize = 65536; // in bytes
var db = window.openDatabase(shortName, version, displayName, maxSize);
db.transaction(populateDB, errorCB, successCB);
}
} catch(e) {
// Error handling code goes here.
if (e == INVALID_STATE_ERR) {
// Version number mismatch.
alert("Invalid database version.");
} else {
alert("Unknown error "+e+".");
}
return;
}
}
так переменная дб инициализируется с моей базой данных. Тогда я пытаюсь заполнить БД, с помощью этого кода:
function populateDB(tx) {
//dropping the table if exists for testing
tx.executeSql('DROP TABLE IF EXISTS CLIENT');
//creating a table
tx.executeSql('CREATE TABLE IF NOT EXISTS CLIENT (id int NOT NULL PRIMARY KEY, name text, adress text, notes text)');
//inserting an entry for testing -- SQLITE ERROR 14 HERE!
tx.executeSql('INSERT INTO CLIENT (name, adress, notes) VALUES ("client1","adress1","note1")');
}
линия, где я пытаюсь вставить в КЛИЕНТА не работает, поэтому транзакция вызывает функцию обратного вызова errorCB, который говорит: «Обработка SQL Error: 1 »и LogCat говорит, что sqlite вернула ошибку 14 .. Кажется, не исправляет ее, я предоставляю моему приложению все разрешения .. и создание таблицы CLIENT не дает мне никаких ошибок, поэтому я думаю, что у приложения есть разрешения на запись в файл db? в чем проблема?
Thx, попробовал. Но не работает. Еще ошибка 14. И я думаю, что «1» не требуется, потому что id является ОСНОВНЫМ КЛЮЧОМ и поэтому использует автоинкремент. –
хорошо, после дополнительных исследований и попыток ваш ответ был действительно полезен. Моя первая попытка попытаться использовать вашу линию не работала, потому что я путал имена, которые я использовал в этом сообщении и в моей программе (я изменил некоторые имена для моего сообщения выше ..). Также PRIMARY KEY SQLite не подразумевает автоинкремент (thx research), поэтому это предположение было неправильным. Спасибо! –