从 WebSQL Javascript 命令返回一个变量

Return a variable from a WebSQL Javascript command

本文关键字:一个 变量 WebSQL Javascript 命令 返回      更新时间:2023-09-26

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

我相信查询正在执行,因为我正在获得成功的选择警报。alert(xyz)只是返回值 nil。

如何将 SQL 数据库中的数据导入 Javascript 变量?

谢谢!

编辑:以下建议的代码更改导致引用错误:找不到变量:结果

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); });

需要注意的几点:

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