Safari中的WebSQL中的SELECT查询返回错误

时间:2016-06-06 02:45:06

标签: javascript sqlite cordova safari web-sql

这是有问题的代码。我一直在努力工作。

问题是,回调中的变量结果中没有任何行。 但这仅存在于Safari中。 Chrome完美运行。
Safari和Chrome上的数据库在数据库中显示正确的值。

结果变量中有一个有趣的属性:

SQLResultSet
insertId: Error: InvalidAccessError: DOM Exception 15

但是行数组不存在。

db.transaction(function (tx) {
        tx.executeSql("INSERT INTO QUIZZES (id,name,completed,icon) VALUES (coalesce((SELECT max(id) FROM QUIZZES),0)+1,?,0,?)", [json.name,json.icon],
            function (tx, result) {
                console.log('Inserted Quiz. Selecting Quiz');

                tx.executeSql("SELECT * FROM QUIZZES ", [],
                    function (tx, result) {
                        console.log(result);
                        var quizid = result.rows[0].id;
                        console.log(quizid);
                    },
                    errorCB);
            });

    },
errorCB);

我尝试过的是通过db.transaction(...在回调中)将我的代码从一个事务重新处理到多个单独的DB调用。 我还尝试重写查询本身,或编写将在100%的时间内返回正确结果的查询。然而,无处可去。

提前感谢您的帮助

1 个答案:

答案 0 :(得分:5)

问题在于Chrome在构建代码方面要宽松得多。

应从查询中选择结果:通过

results.rows.item(0).id;

而不是

result.rows[0].id;

注意该项目。

这解决了我的问题。