无法使用jQuery读取SQLite DB

时间:2012-05-06 11:25:26

标签: jquery html5 sqlite

我目前正在开发一个使用SQLite数据库的网络应用程序。 我可以创建数据库,并将信息写入其中,但我无法在以后的代码中使用存储的信息。

以下是我用来从数据库中读取的代码:

function GetItemFromDB(request, level, callback) {
DB.transaction(
        function (transaction) {
            transaction.executeSql(
                'SELECT ? FROM levels WHERE id=?;',
                [request, level], function (transaction, results) {
                    callback(results);
                });
        }
);

}

然后我想使用存储的信息在游戏中创建一个关卡。我是这样做的:

var ptop = GetItemFromDB('ptop', level);

其中ptop是包含我想要的信息的行,level是游戏中的当前级别,

所以我的问题是:如何从数据库中加载storen信息,稍后在代码中使用它?

感谢您的时间:)

1 个答案:

答案 0 :(得分:2)

我认为您正在尝试使用异步WebSQL API获取返回值,因此您永远不会从函数GetItemFromDB接收返回值。

如果你想从数据库对象中异步读取数据,你应该尝试这样的事情:

function GetItemFromDB(request, level, callback) {
    DB.transaction(function(tx){
        tx.executeSql('SELECT ' + request + ' FROM levels WHERE id = ?', [level], function(tx, results){
            callback(results);
        }, errDB);
    }, errDB);
}

function errDB(err) {
    console.log("Error processing SQL: " + err.code);
}

function getItemCallback(results)
{
    alert("Result rows length: " + results.rows.length);

    //result.rows are the results from the SQL
    //if you know the are only one result, you can
    //work with results.rows.item(0), else iterative over rows
    alert("ptop column of row: " + results.rows.item(0).ptop);
}

然后简单地调用函数:

GetItemFromDB('ptop', level, getItemCallback);

如果您想要或需要使用Synchronous API,我认为此链接对您有所帮助:http://www.w3.org/TR/webdatabase/#synchronous-database-api