2010-12-10 74 views
0

我正在使用下面的函数来执行SQL,它工作正常,当不需要返回,但如果我做一个查询,如“SELECT * FROM table”,那么它不会返回任何东西。该功能是:如何获得返回SQLite Javascript数据库的函数?

function executeSQL(query) 
{ 
    return db.transaction(function(q) 
    {  
    return q.executeSql(query, null, 
    function (q, results) 
    { 
    debug(results); 
    return results; 
    }, 
    function (q, error) 
    { 
    debug(error); 
    } 
); 
    }); 
} 

我打电话的方式是:

results = executeSQL('SELECT * FROM `table`'); 

回答

1

交易功能 - 异步:不等到函数,你把它作为参数的回报,并在事实可能不会返回任何东西。

我不认为有可能编写一个返回结果的包装函数,除非您在循环中等待,这对JavaScript有问题,也不可取。

function executeSQL(query, callback) { 
    db.transaction(function(q) { 
     q.executeSql(query, null, function (q, results) { 
      callback(results); 
     }, function (q, error) { 
      debug(error); 
     }); 
    }); 
} 

var query = "SELECT 1"; 
executeSQL(query, function(result) { 
    alert(result); 
}); 
alert("When am I?"); // this may get called before alert(result)