0

到目前为止,我正在开发一个应用程序来发展我的知识,我创建了一个日历应用程序,用户可以在单击日期时进行预约。然后我有一个删除按钮,它打开在一个新活动中创建的所有约会,我有:一个显示所有约会的列表视图一个显示所选约会(由用户选择删除)的文本视图和一个按钮删除。我希望此按钮从数据库中删除选定的约会(行)。到目前为止,我已经设法写入数据库并显示信息,但我似乎无法让它删除我想要的行..

这就是我使用列表视图中选定的约会(行)填充文本视图的方式

//populate textview with selected item from sqlite data
    public void onListItemClick(ListView parent, View v, int position, long id) {
        selection.setText(stg1[position]);
        delBtn.setEnabled(true);
    }

这是我的删除按钮的动作监听器我需要在这里放置什么来删除选定的行(我尝试了很多方法,但我的应用程序只是崩溃了

public void onClick(View v) {
    switch(v.getId()){

    case R.id.removeBtn:

        break;
    }

}

希望我足够清楚..任何帮助将不胜感激,非常感谢

4

4 回答 4

0

您可以使用以下内容:

db.delete("UsersTable", usernameString +"="+usernameString+ " AND " +this.userId+"="+userId)
于 2012-04-18T22:51:40.863 回答
0

假设您使用的是 SQLiteDatabase 类,您总是可以执行以下操作:

db = SQLiteDatabase.openDatabase("/data/data/yourpackage/databases/dbname.db", null, SQLiteDatabase.OPEN_READWRITE);
db.execSQL("delete from your_table where your_column = '" + some_value + "'");
db.close();

我不知道您的代码的范围,但是根据您提供给我们的内容,我会说将该块放入您的 onClick()

然后就像 slayton 所说,使用 notifyDatasetChanged() 更新您的列表。否则它将从数据库中删除,但在重新启动填充列表的查询之前,您永远不会知道它。

此外,您可能希望创建一个全局变量来说明当前选择的列表项。这样你就可以在你的 onListItemClick() 中设置它,然后根据你之前在 onClick 中选择的内容快速删除它,而不必弄乱那个 switch 语句。

于 2012-04-24T15:25:30.343 回答
0

这就是你需要的。在您的数据库处理程序类中,添加

  int id=1;
  SQLiteDatabase db = this.getWritableDatabase();
  db.execSQL("DELETE FROM "+TABLE_NAME+" WHERE "+KEY_ID+" = "+id+";");
  db.close();
于 2013-05-17T04:28:45.550 回答
0

不清楚是要从 SQLite 表还是从列表视图中删除一行。

如果要从列表视图中删除一行,只需从数组中删除该项目,然后调用notifyDataSetChanged()

如果要从 SQLite DB 中删除该行,则需要编写DELETE查询:http ://www.sqlite.org/lang_delete.html

于 2012-04-18T22:02:21.547 回答