觀看我如何調用db.delete
方法;如果我下面的記錄被成功刪除:Android SQLiteDatabase.delete方法不會刪除使用哪裏的參數
public void deteleProfile(Long id) throws SQLException {
SQLiteDatabase db = helper.getWritableDatabase();
Integer i = db.delete(ProlificDatabase.TABLE, "_id=?", new String[] {id.toString()});
Log.d(TAG, i + " records deleted where id is " + id);
但是如果我這樣做:
public void deteleProfile(Long id) throws SQLException {
SQLiteDatabase db = helper.getWritableDatabase();
Integer i = db.delete(ProlificDatabase.TABLE, "?=?", new String[] {BaseColumns._ID,id.toString()});
Log.d(TAG, i + " records deleted where id is " + id);
沒有記錄被刪除。也沒有提出例外或警告說出了問題。
的情況下,你沒有抓住它,在兩個電話之間的區別是:
..."_id=?", new String[] {id.toString()});
VS
..."?=?", new String[] {BaseColumns._ID,id.toString()});
文檔BaseColumns._ID是:
public static final String _ID
與Constant Value: "_id"
後一種方式似乎爲更整潔的代碼,但爲什麼它不工作?
編輯: 我懷疑whereargs
參數僅適用於表達式的右側。
有人可以證實這一點嗎?
我的問題是,爲什麼這裏使用args參數不幹活已經知道如何刪除行;-) –
你有沒有在增加一列_id您表? –
是的,這就是爲什麼第一個示例'_id =?'起作用的原因。 –