我的问题如下:我正在使用我的Phonegap-App中的Javascript创建一个sqlite数据库,并从eclipse(LogCat)获取以下信息:sqlite返回:错误代码14,msg =无法在源25467打开文件
这是我初始化db(工作正常)的方式:
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;
}
}
所以使用我的数据库初始化变量db。然后我尝试使用以下代码填充数据库:
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")');
}
我尝试INSERT INTO CLIENT的行不起作用,因此事务调用回调函数errorCB,其中显示“Error SQL:1”,而LogCat表示sqlite返回错误14 ..似乎无法解决它,我给我的应用程序所有权限..并创建表CLIENT不会给我任何错误,所以我认为该应用程序有权写入db文件?有什么问题?
答案 0 :(得分:0)
试试这个......
tx.executeSql('INSERT INTO CLIENT (id,name, adress, notes) VALUES ("1","client1","adress1","note1")');
答案 1 :(得分: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 unique”并在插入上指定id以确保插入正常工作。然后继续向id列添加更多条件。