Phonegap / Cordova WebSql事务未触发

时间:2014-07-10 09:52:57

标签: javascript ios cordova web-sql

我使用了cordova的最新版本(3.5)并且我想使用WebSQL保存一些数据但是当我调用database.transaction(查询,成功,错误)时它什么也没做。我的sucess方法和error方法都有alert()来通知错误或成功,但没有一个触发。

这是我的代码:

    function onDeviceReady(){
        var db = window.openDatabase("Database", 1, "PhoneGap Demo");
        db.transaction(populateDB, errorCB, successCB);
    }

    function populateDB(tx) {
        tx.executeSql('DROP TABLE IF EXISTS DEMO');
        tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
        tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
        tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
    }

    function errorCB(err) {
        alert("Error processing SQL: "+err.code);
    }

    function successCB() {
        alert("success!");
    }

正如我所说,警报框没有显示。可能是什么问题呢? 更多 信息:我正在使用Cordova 3.5并在iPhone模拟器上进行测试。 我用我的笔记本电脑在chrome上执行了代码,似乎有效。

1 个答案:

答案 0 :(得分:0)

环境:cordova 3.4
设备:仿真器(Nexus 7)
操作系统:Android KitKat 4.4
我刚刚检查了你的代码,并在第一行得到了“参数数量不足”的错误

var db = window.openDatabase("Database", 1, "PhoneGap Demo");

根据API文档,应该有四个参数,我将代码更改为

var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 1000);

它有效。最后一个参数是数据库的初始大小(以字节为单位)。

希望上述解决方案也适用于iPhone。

我使用 console.log()调用以及alert()进行调试。