2012-05-06 6 views
0

現在、私はSQLiteデータベースを使用しているWebアプリケーションを開発中です。 データベースを作成して情報を書き込むことはできますが、後で自分のコードに格納された情報を使用することはできません。ここでjQueryでSQLite DBを読み取ることができません

は、私がデータベースからの読み取りに使用しているコードです:

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

}

私はゲーム内のレベルを作成するために、保存された情報を使用します。私はそうのようにこれを行う:PTOPは私が欲しい情報を含む行で、レベルがゲーム内の現在のレベルである

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

だから私の質問は:どのように私はからstoren情報を読み込むことができますデータベースを作成し、コードの後半で使用しますか?お時間を

感謝:)

答えて

2

私はあなたが機能GetItemFromDBからの戻り値を受け取ることはありませんので、非同期WebSQLのAPIを使用して戻り値を取得しようとしていると思います。

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

をそして単に呼び出す機能:あなたのDBオブジェクトから非同期にデータを読みたい場合は

、あなたはこのような何かを試してみてください

GetItemFromDB('ptop', level, getItemCallback); 

をしたい場合、またはに必要同期APIを使用して、私はこのリンクがあなたのために役立つと思う:http://www.w3.org/TR/webdatabase/#synchronous-database-api

+0

ありがとう、しかし、コードを使用するとき、それはまだ "未定義"を返します。しかし、result.rows.lengthは1です。id = 1の値を返すにはどうすればよいですか? – Snapcount

+0

申し訳ありませんが、私は変数 '結果'のsを忘れました、多分それは問題でした!私はあなたが準備されたステートメントのパラメータとして渡すことができるかどうかわからないので、ステートメントに直接連結して '要求'を変更しました。もう一度やり直してみてください。今すぐ使えるはずです。 – corteggo

+0

あなたは私のヒーローです!それは魅力のように働く:D – Snapcount