如何从SQLiteDatabase中删除行?
我有一个todo应用程序,它在主屏幕上显示ListView
的任务列表。我试图通过点击完成按钮来删除任务。如何从SQLiteDatabase中删除行?
但该应用程序正在删除它的最低ID,而不是删除我试图删除的任务。
public void onDoneButtonClick(View view) {
ListView listView = (ListView)findViewById(R.id.list);
Cursor cursor = (Cursor) listView.getItemAtPosition(position);
int columnId = cursor.getColumnIndex(BaseColumns._ID);
int id = cursor.getInt(columnId);
Log.d("id", Float.toString(id));
String sql = String.format("DELETE FROM %s WHERE %s = %d",
TaskContract.TABLE,
TaskContract.Columns._ID,
id);
helper = new TaskDBHelper(MainActivity.this);
SQLiteDatabase sqlDB = helper.getWritableDatabase();
sqlDB.execSQL(sql);
updateUI();
Log.d("delete", sql);
}
有人可以帮我解决这个问题吗?
您可以在SQLiteDatabase使用delete方法:
编辑:
// you must do it after opening database
helper = new TaskDBHelper(MainActivity.this);
SQLiteDatabase sqlDB = helper.getWritableDatabase();
sqlDB.delete(
TaskContract.TABLE, // table
TaskContract.Columns._ID + "=?", // where clause
new String[]{Integer.toString(id)} // where args
);
对不起,它仍然删除行中的第一个在:( –
@SelinAksu也许问题不在于SQLDatabase。你确定调用了正确的侦听器,并且光标在有效的位置? – krystian71115
@SelinAksu也许你并没有转移到正确的位置,请参阅http://developer.android.com/reference/android/database/Cursor.html#moveToPosition(int) – krystian71115
你的问题不明确。 –
@MD当我点击done按钮时,它不会删除该特定任务,而是删除该行中的第一个任务。 –
你试过删除方法吗? http://tinyurl.com/ngv2v3n – krystian71115