【问题标题】:phoneGap Android - Populate database once "Error processing SQL:1"phoneGap Android - 填充数据库一次“错误处理 SQL:1”
【发布时间】:2012-06-12 03:59:20
【问题描述】:

如果数据库存在,我会尝试避免填充数据库,但是当我尝试在代码中取消此行时,我得到 "Error processing SQL:1"

tx.executeSql('DROP TABLE IF EXISTS DEMO');

这是我的全部填充函数

 function populateDB(tx) {
        tx.executeSql('DROP TABLE IF EXISTS DEMO');
        tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, word TEXT NOT NULL');
        tx.executeSql('INSERT INTO DEMO (id, word) VALUES ("1", "Apple")');
        tx.executeSql('INSERT INTO DEMO (id, word) VALUES ("2", "Orange")');

    }

【问题讨论】:

    标签: android database cordova populate


    【解决方案1】:

    你为什么不使用

    CREATE TABLE IF NOT EXISTS DEMO  (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, kword TEXT NOT NULL, eword TEXT NOT NULL, pronoun TEXT NOT NULL, level INTEGER NOT NULL)
    

    【讨论】:

      【解决方案2】:

      您的函数存在一系列问题,这些问题在下面得到纠正。它现在应该可以工作了。

          function populateDB(tx) {
              isTableExists(tx, "DEMO", function(status) {
                  if (!status) {
                      alert("table not exist, creating one");
                      tx.executeSql('CREATE TABLE DEMO (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, kword TEXT NOT NULL, eword TEXT NOT NULL, pronoun TEXT NOT NULL, level INTEGER NOT NULL)');
                      tx.executeSql('INSERT INTO DEMO (kword, eword, pronoun, level) VALUES ("Apple", "", "", 1)');
                      tx.executeSql('INSERT INTO DEMO (kword, eword, pronoun, level) VALUES ("Orange", "", "", 2 )');
                  } else {
                      alert("table exist, dropping for test");
                      tx.executeSql('DROP TABLE DEMO');
                  }
              });
          }
      
          function isTableExists(tx, tableName, callback) {
              tx.executeSql('SELECT * FROM DEMO', [], function(tx, resultSet) {
                  if (resultSet.rows.length <= 0) {
                      callback(false);
                  } else {
                      callback(true);
                  }
              }, function(err) {
                  callback(false);
              });
          }
      

      【讨论】:

      • 嗨,当我从“INSERT INTO DEMO (id, word)”中遗漏了“id”时,我编辑了问题(为 SQL 编写问题时出现了一些错误)我收到错误处理 SQL: 5.如果表 DEMO 存在,我试图不执行插入 SQL。
      • 对不起,我现在不明白你的问题,你想在每次运行应用程序时创建表吗??
      • 我只想创建一次表,每次我再次加载页面时,所有这些条目都会再次执行。
      • 所以你只想创建一次表,并且只放一次数据??
      • 是的。我只想在应用程序安装开始时设置一次所有表条目。
      猜你喜欢
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 2012-11-03
      • 2012-06-05
      • 2021-02-01
      • 1970-01-01
      相关资源
      最近更新 更多