观看我如何调用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 =?'起作用的原因。 –