从数据库中删除一行,根据所选工人的名称获取工人的ID

时间:2015-12-17 02:55:25

标签: c# sql sql-server wpf visual-studio-2015

我有一个Windows Presentation Foundation,我有一个名为“Worker”的数据库和一个属于这个数据库的表,该表名为TestTable,有6列:Id,Name,Lastname,Gender,Email和Password,I已经添加了一些元素,在Mainwindow中,用户可以看到除了Id之外的数据库列中包含的所有信息,我保持Id不在用户眼中,所以我有不同的Listboxs信息:ListboxNames,ListboxLastnames,ListboxGenders等。 ..我做了一个允许我根据ListboxNames.SelectedItem从数据库中删除行的方法,但它使用名称删除,这不方便,因为可能有几个相同的名称,你能解释我如何得到正确的根据ListboxNames.SelectedItem的id,如何使用Id从ListBox中选择一个名称来删除?请记住,我从未向玩家展示身份证明,非常感谢! 这是我用来删除的方法,我想我需要首先从数据库中获取具有相同名称的ID,然后我必须在ID之间选择正确的ID,你只是让我知道!

 private void buttonDelete_Click(object sender, RoutedEventArgs e)
    {
        cmd.CommandText = "delete from TestTable where name='" + listBoxListNames.SelectedItem + "'";
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        listBoxListNames.Items.Clear();
        listBoxListLastnames.Items.Clear();
        listBoxListGenders.Items.Clear();
        listBoxListEmails.Items.Clear();
        listBoxListPasswords.Items.Clear();
        ShowDatabase();
    }

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用listbox的SelectedValue属性;为此,您需要以下列方式绑定列表框:

列表框定义:

<ListBox Name="myList" SelectedValuePath="myID" DisplayMemberPath="myTextField"... />

绑定:

DataTable myDataTable= getDataTable();//populate datatable from database
myList.SelectedValuePath = "myID";
myList.DisplayMemberPath = "myTextField";
myList.ItemsSource = myDataTable;

然后,您可以使用SelectedValue重新编写代码以删除项目:

private void buttonDelete_Click(object sender, RoutedEventArgs e)
{
    cmd.CommandText = "delete from TestTable where itemID=@myID";
    cmd.Parameters.AddWithValue("myID", myList.SelectedValue);
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
   //Do rest of operations here
}

注意:您必须使用parameterized查询以避免注入;所以也要看一下查询