2
我有這個SQL語句在我的數據庫上運行,我確定它是正確的,但它沒有對數據庫進行任何更改。我該如何調試它?調試SQLite語句
查詢:
UPDATE task SET name=?, description=?, startDate=?, dueDate=?, complete=?, status=?, percentComplete=?, taskType=? WHERE rowId=:rowId
我有條件地綁定在第8個參數取決於他們是否爲空。最後一個參數在所有情況下都綁定到當前rowId(我已經驗證了綁定它時rowId是正確的)。事情是這樣的:
int rowIdIdx = sqlite3_bind_parameter_index(stmt, ":rowId");
if (rowIdIdx > 0) {
sqlite3_bind_int(stmt,rowIdIdx,rowId);
}
我也覈實rowIdIdx結合ROWID時等於9。但是,當調用sqlite_step返回(總是SQLITE_DONE),該數據庫是永遠不會改變,sqlite3_changes(db)
總是返回0
但是,如果我刪除WHERE
子句,表中的每一行做得到更新,並sqlite3_changes(db)
返回表中的行數。
這就是我之前使用過的更新語句工作得很好的框架。首先,是否有任何顯而易見的缺失,其次,我怎麼去嘗試調試呢?
編輯:
有點檢查後,如果我更換:ROWID只用另一正常?
參數,它工作正常。但有一個原因,我使用命名參數,我不能這樣離開它。怎麼了!?