如何从sql表中删除特定行? 我有一个从sql表填充的listview。例如。表格中有5条记录,列表视图也是如此。当我点击listview中的第3项时,我想从sql表中删除第3条记录。行id当然是不可能的,因为它与行号不同。这是什么SQL语法?
这是我的填充查询:
public Cursor getAllTitles() {
String[] columns = new String[]{KEY_ROWID, KEY_NAME, KEY_HOTNESS};
return ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);}
和我的删除查询:
public void deleteEntry(int lRow1) {
ourDatabase.delete(DATABASE_TABLE, KEY_ROWID + "=" + lRow1, null);}
这就是我将光标放入arraylist的方式:
Cursor c = info.getAllTitles();
if (c.moveToFirst())
{
do{
todoItems.add(c.getString(0) + " " + c.getString(1) + " " + c.getString(2));
}while (c.moveToNext());
}
textView1是listview布局中TextView的id。这是我的setOnClickListener:
holder.textView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
TextView tv = (TextView) v ;
String text_of_clicked_textview = tv.getText().toString();
selected_row_num = (Integer)v.getTag();
Log.i("TAG", "" + text_of_clicked_textview + selected_row_num);
}
});
当我点击ListView的第3项时,我通过Log.i在logcat中获取item2。
在getAllTitles()查询中我也得到了KEY_ROWID(暂时),但由于这不能在textview的文本中,我需要点击项目的行号。
我只需要更改deleteEntry查询以删除第3项。
答案 0 :(得分:2)
当您填写tableView时,可以在视图中存储此字段的ID(即view.setTag(new Integer(cursor.getInt(FIELD_ID)));
)
您可以使用int id = ((Integer)view.getTag()).intValue();
答案 1 :(得分:1)
编辑:我完全忘记了标签。使用视图标记在每个视图项中存储实际记录ID(因为每个项实际上都是一个视图)。
然后,您可以访问每个项目的属性以执行删除方法。
之后,它只是简单的SQL。 DELETE FROM Table WHERE Table.recordId = %d