2
工作
我已經在ContentProvider
子類的Update
方法如下代碼:SQL佔位符(「?」)不SQLiteDatabae.update
當我使用佔位符Where子句,我更新不工作(count
等於0):
不起作用:
rowID = uri.getPathSegments().get(1);
whereStr = "?=?";
count = db.update(PathSQLTable.TABLE_NAME, values, whereStr, new String[]{PathSQLTable.ID_KEY,rowID});
但是,如果我做手工的substituion,一切工作正常。
這工作:
rowID = uri.getPathSegments().get(1);
whereStr = PathSQLTable.ID_KEY + "=" + rowID;
count = db.update(PathSQLTable.TABLE_NAME, values, whereStr, null);
我的問題是 - 是否有佔位符邏輯的錯誤(如this post建議)還是我做錯了什麼?
有趣。你碰巧知道在我的「不起作用」情況下作爲SQL查詢發送了什麼?沒有任何錯誤被android拋出,它只是返回零。 – CjS 2012-03-18 06:29:48
我只知道列名不提供'?'。它與C#中的相同,例如'select * from city where city = @ City' ** ** City **通過'cmd.Parameters.AddWithValue(「@ City」,「Stockholm」);'提供。然而,在你的「不工作」查詢中,我認爲它翻譯'?',例如**'ID_KEY'= 6 **,所以ID_KEY被視爲字符串值,而不是列名,但它只是我的假設:) – waqaslam 2012-03-18 11:59:55
好吧,這將解釋爲什麼它是一個有效的查詢返回零記錄。謝謝。 – CjS 2012-03-18 13:09:36