2012-05-31 3 views
0

Моя проблема заключается в следующем: я создаю базу данных 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? в чем проблема?

ответ

0

Попробуйте это ...

tx.executeSql('INSERT INTO CLIENT (id,name, adress, notes) VALUES ("1","client1","adress1","note1")'); 

См SQLite returned an error code of 14

+0

Thx, попробовал. Но не работает. Еще ошибка 14. И я думаю, что «1» не требуется, потому что id является ОСНОВНЫМ КЛЮЧОМ и поэтому использует автоинкремент. –

+0

хорошо, после дополнительных исследований и попыток ваш ответ был действительно полезен. Моя первая попытка попытаться использовать вашу линию не работала, потому что я путал имена, которые я использовал в этом сообщении и в моей программе (я изменил некоторые имена для моего сообщения выше ..). Также PRIMARY KEY SQLite не подразумевает автоинкремент (thx research), поэтому это предположение было неправильным. Спасибо! –

0

Если вы видите сообщение об ошибке:

I/Database( 362): sqlite returned: error code = 14, msg = cannot open file at source line 25467 

вы можете спокойно игнорировать его. Скорее всего, это экземпляр компонента WebView. Он выкинет эту ошибку, пытаясь открыть webview.db, что совершенно не обязательно.

Вместо «id int NOT NULL PRIMARY KEY» попробуйте «уникальный идентификатор» и укажите идентификатор на вкладке, чтобы убедиться, что ваша вставка работает. Затем добавьте дополнительные условия в столбец id.

+0

Я не мог игнорировать его, потому что db.transaction называл функцию обратного вызова ошибки. Но я нашел ошибку (см. Ниже). Но спасибо за помощь, я ценю это! –

Смежные вопросы