SELECT Safari 中的 WebSQL 查询返回错误
SELECT Query in WebSQL in Safari is returning an error
这是有问题的代码。我一直在努力工作。
问题是回调中的变量 result 中没有任何行。
但这仅存在于 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(... 在回调中将我的代码从一个事务重新处理为对数据库的多个单独调用。
我还尝试自己重写查询,或者编写 return 100% 正确结果的查询。然而,一事无成。
提前感谢您的帮助
问题是 Chrome 在您构建代码的方式上要宽松得多。
从查询中选择结果应该完成:通过
results.rows.item(0).id;
而不是
result.rows[0].id;
注意项目。
这解决了我的问题。
这是有问题的代码。我一直在努力工作。
问题是回调中的变量 result 中没有任何行。
但这仅存在于 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(... 在回调中将我的代码从一个事务重新处理为对数据库的多个单独调用。
我还尝试自己重写查询,或者编写 return 100% 正确结果的查询。然而,一事无成。
提前感谢您的帮助
问题是 Chrome 在您构建代码的方式上要宽松得多。
从查询中选择结果应该完成:通过
results.rows.item(0).id;
而不是
result.rows[0].id;
注意项目。
这解决了我的问题。