从sql中删除特定行(使用带有sqlite的Android)

时间:2012-02-26 21:34:49

标签: android sql

如何从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项。

2 个答案:

答案 0 :(得分:2)

当您填写tableView时,可以在视图中存储此字段的ID(即view.setTag(new Integer(cursor.getInt(FIELD_ID)));

您可以使用int id = ((Integer)view.getTag()).intValue();

访问ID

答案 1 :(得分:1)

编辑:我完全忘记了标签。使用视图标记在每个视图项中存储实际记录ID(因为每个项实际上都是一个视图)。

然后,您可以访问每个项目的属性以执行删除方法。

之后,它只是简单的SQL。 DELETE FROM Table WHERE Table.recordId = %d