1

如果数据库存在,我试图避免填充数据库但是当我尝试在我的代码中取消这一行时,我得到“错误处理 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")');

    }
4

2 回答 2

5

你为什么不使用

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)
于 2012-09-13T15:51:36.177 回答
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);
        });
    }
于 2012-06-08T06:00:02.023 回答