c#通过列表框删除数据库条目

时间:2015-03-17 21:39:09

标签: c# asp.net visual-studio-2012 listboxitem

我正在尝试通过列表框从表中删除行。下面是我用来将数据库中的数据显示到列表框中的代码。仅供参考 - 我正在使用日历搜索功能 - 用户在日历上选择日期,点击“搜索”,列表框会根据数据库中的日期显示相应的结果。

Con.Open():
SqlCommand cmd = new SqlCommand("Select Member, Clerk, Room, Time From Events where Date = @searchDate", con);
cmd.Parameters.AddWithValue("@searchDate",SearchDate.SelectedDate);
IDataReader reader = cmd.ExecuteReader();

            while (reader.Read()){               
                string member = (string)reader["Member"];
                string clerk= (string)reader["Clerk"];
                string room = (string)reader["Room"];
                string time = (string)reader["Time"];
                lstEvents.Items.Add("Member: " + member + " -- " + "Clerk: " + clerk+ " -- " + "Room: " + room + " -- " + "Time: " + time);        
                //lstEvents is the ID of the listbox              
            } 
            reader.Close();
con.Close();

上面的代码工作得很好。我希望的是找到一种删除数据库中相应行的方法。因此,用户选择列表中的一个返回项并单击“删除”。我到目前为止......

SqlCommand cmd = new SqlCommand("Delete From Events where Member, Clerk, Room, Date, Time = @member, @clerk, @room, @date, @time", con);
        cmd.Parameters.AddWithValue("@member", lstEvents.SelectedValue);
        cmd.Parameters.AddWithValue("@clerk", lstAppointments.SelectedValue);
        cmd.Parameters.AddWithValue("@room", lstEventss.SelectedValue);
        cmd.Parameters.AddWithValue("@date", Convert.ToDateTime(SearchDate.SelectedDate);
        cmd.Parameters.AddWithValue("@time", lstEvents.SelectedValue);

        cmd.Connection = con;
        cmd.ExecuteNonQuery(); 

这种尝试有点似乎有点牵强,有任何建议如何做到这一点?我不是特别明白如何选择多个值,即列表框中同一行的成员和职员。

2 个答案:

答案 0 :(得分:2)

从数据库加载行时,还要加载主键(即使您不显示它)。

当您删除列表框中选择的内容时,只需使用主键删除即可。

如果您的表没有主键,那么您应该添加一个主键非常好。

答案 1 :(得分:0)

您最好的选择是使用数据绑定,您可以在此处创建具有ID的对象列表。执行此操作的最佳方法是创建一个新类并为其提供数据库的属性:

public class MyClass
{
    public int Id {get; set;}
    public string Member {get; set;}
    public string Clerk {get; set;}
    public string Room {get; set;}
    public string Time {get; set;}
}

一旦你拥有了你的对象,你就可以"绑定"这是一个listboxitem控件

ASP.NET: Listbox datasource and databind

一旦你设法将列表对象绑定到listboxitem控件,就可以在按钮事件中执行这样的代码

MyClass selectedItem = (MyClass)yourcontrolname.SelectedItem;
// do stuff with selectedItem.Id (like delete an entry from the database