3

初めてレコードのフィールドを更新しようとしましたが、変数を使用して行を指定すると、更新が保存されません。

問題の背景 - ユーザーが画像をクリックすると、checkDone() 関数が呼び出され、行番号 (i) が渡されます。次に、グローバル変数 (glbID) を行 nbr (i) に設定し、updateDB 関数を呼び出して、指定した行のステータス フィールドを更新しました。エラーは発生しませんでしたが、フィールドが更新されていないことに気付きました。行IDをハードコーディングすると、更新が保存されました。しかし、glbID var と別の strID を使用して、それがフォーマット タイプの問題であるかどうかを確認しても、問題を解決できませんでした。他のいくつかのバリエーションを試してみましたが、役に立ちませんでした。

これに関する誰かの助けに感謝します。Androidエミュレーターでテストしています。分析に役立つ他の情報があれば教えてください。

function checkDone(i) {
   var db = window.openDatabase("Database", "1.0", "GTKdb", 200000);
   glbID = i    //SET global variable to row nbr
   document.getElementsByTagName("img")[i].src = "img/checkbox_checked.png";
   db.transaction(updateDB, errorCB); 
}


function updateDB(u) {        
   var strDone = "DONE"
    var strID = "" + glbID;  //SET new variable to glbID, converting to string to see if format type issue

    u.executeSql('UPDATE USER set status = ? where id = ?', [strDone,"2"], successCB, errorCB); //THIS WORKS WHEN ID value hardcoded
   //u.executeSql('UPDATE USER set status = ? where id = ?', [strDone,glbID], successCB, errorCB); //NO UPDATE using var glbID
   //u.executeSql('UPDATE USER set status = ? where id = ?', strDone,strID], successCB, errorCB); //NO UPDATE using var strID
    alert('AFTER UPDATE Status= '+status);  //No value for status appears
}
4

1 に答える 1

0

よくわかりませんが、これが問題かもしれません。文字列を挿入するときは、引用符で囲む必要があります。

'UPDATE USER set status = "?" where id = ?'

それが役に立てば幸い。

于 2012-12-14T09:30:35.167 に答える