无法从webSQL数据库中选择行

时间:2013-11-13 21:48:36

标签: javascript web-sql

我正在制作一个使用webSQL的JS对象,其api就像localStorage一样。我的方法getItem()无效。

myObject.setItem()方法工作得很好(我可以看到Dev Tools中的行)......

localStorage.setItem("key5","val6",function (result) {
   console.log(result); // success!
});

我的方法myObject.getItem()只返回0只受影响的行...

localStorage.getItem("key5",function (tx,result) {
     console.log(result); // returns 0 affectedRows
});

Click here for my fiddle或......

var dbConfig = {
           "name" : "DB",
    "displayName" : "db1",
        "version" : "1.0",
           "size" : 200000
    };

var webSql = function () {
    var db = window.openDatabase(dbConfig.name, dbConfig.version, dbConfig.displayName, dbConfig.size);

    console.log("Opening database: " + JSON.stringify(dbConfig));

    init();

    function init () {
        db.transaction(function(tx){
            var sql = 'CREATE TABLE IF NOT EXISTS storage (key, value)';

            tx.executeSql(sql);

        },errorCB,successCB);
    }

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

    function successCB() {
        console.log("success!");
    }

    //private
    return {
        getItem: function (key, callBack) {

            db.transaction(function (tx) {
                var sql     = 'SELECT * FROM storage WHERE key=?';

                tx.executeSql(sql, [key], function (tx,result) {

                    callBack(tx,result);

                }, errorCB);

            },errorCB);


        },

        setItem: function (key, value, callBack) {

            db.transaction(function (tx) {
                var sql = 'INSERT INTO storage (key,value) VALUES ("'+key+'","'+value+'")';
                console.log('SET SQL: ' + sql);

                tx.executeSql(sql, [], function (tx,result) {
                    console.log('test: ' + result);
                    callBack(tx,result);

                }, errorCB);

            },errorCB);

        }

    };
}();

var localStorage = webSql;

localStorage.setItem("key5","val6",function (result) {
   console.log(result);
});

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

我发现这是一个浏览器兼容性问题。 Chrome for Linux存在问题,但现在我正在使用Chrome for Windows,我的同一个小提琴工作正常。