0

我的问题如下:我正在我的 Phonegap-App 中使用 Javascript 创建一个 sqlite 数据库,并从 eclipse (LogCat) 获得以下信息: sqlite 返回:错误代码 14,msg= 无法打开源文件 25467

这就是我初始化数据库的方式(工作正常):

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,它显示“错误处理 SQL:1”,LogCat 说 sqlite 返回错误 14 .. 似乎无法修复它,我'正在给我的应用程序所有权限.. 并且创建表 CLIENT 不会给我任何错误,所以我认为该应用程序有权写入 db 文件?问题是什么?

4

2 回答 2

0

尝试这个...

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

请参阅SQLite 返回错误代码 14

于 2012-05-31T13:31:34.500 回答
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 列中添加更多条件。

于 2012-05-31T14:50:10.383 回答