2010-12-10 72 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)