1

データベースが存在する場合、データベースへの入力を回避しようとしていますが、コードでこの行をキャンセルしようとすると、「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")');

    }
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 に答える