【问题标题】:Android Phonegap App Database errorAndroid Phonegap 应用数据库错误
【发布时间】:2012-06-05 18:07:49
【问题描述】:

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

【问题讨论】:

    标签: android sqlite cordova insert-into


    【解决方案1】:

    试试这个...

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

    SQLite returned an error code of 14

    【讨论】:

    • 谢谢,试过了。但不起作用。仍然是错误 14。我认为不需要“1”,因为 id 是 PRIMARY KEY,因此使用自动增量。
    • 好的,经过更多的研究和尝试,您的答案真的很有用。我第一次尝试使用你的线路没有奏效,因为我混淆了我在这篇文章和我的程序中使用的名称(我为上面的帖子更改了一些名称..)。 SQLite 的 PRIMARY KEY 也没有暗示自动增量(感谢研究),所以这个假设是错误的。谢谢!
    【解决方案2】:

    如果您看到错误:

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

    【讨论】:

    • 我不能忽略它,因为 db.transaction 调用了错误回调函数。但我发现了错误(见下文)。但是感谢您的帮助,我很感激!
    猜你喜欢
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    相关资源
    最近更新 更多