![](/img/trans.png)
[英]SQL Delete Statement does not work with selecting a row from a dataGridView
[英]SQL connection selecting row to delete
我在 Visual Studio 中有一个本地数据库,在我的项目中,我想删除在 WPF 中选择的行。
这是我到目前为止所得到的:
private void Delete(object sender, RoutedEventArgs e)
{
DataRowView o = (DataRowView)g2.SelectedItem;
int ID = Convert.ToInt32(o.Row.ItemArray[0]);
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=MYFOLDER";
con.Open();
SqlCommand cmd = new SqlCommand();
cmd = new SqlCommand("DELETE FROM [STOCK] WHERE o = @ID", con);
cmd.Connection = con;
cmd.ExecuteNonQuery();
{
MessageBox.Show("Row deleted");
}
在这个语句中,我可以 select 一行:
DataRowView o = (DataRowView)g2.SelectedItem; int ID = Convert.ToInt32(o.Row.ItemArray[0]);
但后来我必须从我的本地数据库中删除它,我不知道如何完成这个。 我知道这句话是错误的……但正确的是什么: cmd = new SqlCommand("DELETE FROM [STOCK] WHERE o = @ID", con);
希望有人可以帮助我。 我正在使用 Visual Studio 2019 - 这是一个 WPF 项目,带有 C#。
问候!
您需要参考DELETE
中的ID
列
另请注意以下事项
AttachDbFilename
是个坏主意,而是使用FOR ATTACH
正常附加数据库using
处理连接和命令等对象try
catch
处理错误private void Delete(object sender, RoutedEventArgs e)
{
DataRowView o = (DataRowView)g2.SelectedItem;
int ID = Convert.ToInt32(o.Row.ItemArray[0]);
try
{
const string query = @"
DELETE FROM [STOCK] WHERE [STOCK].Id = @ID;
";
using (SqlConnection con = new SqlConnection(Properties.ConnectionString))
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.Parameters.Add("@ID", SqlDbType.Int).Value = ID;
con.Open();
cmd.ExecuteNonQuery();
}
MessageBox.Show("Row deleted");
}
catch(Exception ex)
{
MessageBox.Show("Error occurred:\r\n" + ex.Message);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.