我正在尝试使用Javascript查询WebSQL数据库,以返回单个最高数据行的“id”列的值。
db.transaction(function(tx) {
//
// PROBLEM AREA
// How to get the data into a variable?
//
var xyz = 0;
tx.executeSql('SELECT MAX(id) FROM WORKOUTS ORDER BY id DESC' [],function(tx, results) {
var xyz = results.row.id, i;
alert('Alert 2');
alert(xyz);
});
}, function(){
alert('success SELECTING!');
}); // End transaction
我相信查询正在执行,因为我正在获取成功SELECTING 警报。
alert(xyz)
只是返回值nil。
如何将SQL数据库中的数据转换为Javascript变量?
谢谢!
编辑:以下建议的代码更改导致ReferenceError:找不到变量:results
function myTransaction(cb)
{
db.transaction(function(tx) {
tx.executeSql('SELECT MAX(id) FROM WORKOUTS ORDER BY id DESC', [], function(tx, results) {
cb(results); });
},function(){
alert('success SELECTING!');
}); // End transaction
}
myTransaction(function(results) { alert(results); });
答案 0 :(得分:2)
有几点需要注意:
您的executeSql参数列表中缺少逗号
tx.executeSql('SELECT MAX(id) FROM WORKOUTS ORDER BY id DESC', [],function(tx, results) {
不是
tx.executeSql('SELECT MAX(id) FROM WORKOUTS ORDER BY id DESC' [],function(tx, results) {
结果对象包含rows
属性,而不是row
。
所以你要使用
results.rows.item(0)
不是
results.row
transaction()
需要3个回调,第一个是在打开事务时执行的回调。第二个是错误回调,第三个是成功回调。您正在使用错误回调,但将其视为成功回调。