Android Phonegap App Database错误

时间:2012-05-31 13:13:11

标签: android sqlite cordova insert-into

我的问题如下:我正在使用我的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文件?有什么问题?

2 个答案:

答案 0 :(得分:0)

试试这个......

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

请参阅SQLite returned an error code of 14

答案 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列添加更多条件。