2012-12-12 9 views
3

我第一次嘗試更新記錄中的字段,但是,當它使用變量指定行時,它不保存更新。在行中的sqlite更新字段不能識別行ID的變量

問題背景 - 當用戶點擊圖片時,調用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 
} 
+0

ID字段是字符串字段嗎? Thena你有引號圍繞數字:更新USER設置狀態='DONE'其中id ='2'。或者是id字段是一個自動增量字段? – josef

+0

當我設置輸入字段時,將類型設置爲數字。不知道之後是否改變,或者如何檢查它是如何存儲在數據庫中的。我是一個初學者。 – tcougs

+0

我應該澄清,當我在更新聲明中使用引號「2」硬編碼id值時,它工作正常。但是,問題是我需要這個與變量一起工作,因爲行ID將根據用戶點擊不同的行而有所不同... – tcougs

回答

0

我不確定,但這可能是問題所在。當你插入字符串時,你需要把它放在引號內。

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

希望它有幫助。

+0

謝謝arthan,這是解決問題的正確途徑。我沒有完全通過使用「?」來完成它的工作。但是,經過一些變化並將var放在引號內,以下工作:'UPDATE USER set status =? where id =「'+ nbrID +'」',[strDone],... – tcougs

+0

歡迎@tcougs :) – arthankamal