从WebSQL Javascript命令返回变量

时间:2016-03-13 16:35:59

标签: javascript sql web-sql

我正在尝试使用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); });

1 个答案:

答案 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个回调,第一个是在打开事务时执行的回调。第二个是错误回调,第三个是成功回调。您正在使用错误回调,但将其视为成功回调。