SQL 连接选择要删除的行
SQL connection selecting row to delete
我在 Visual Studio 中有一个本地数据库,在我的项目中我想删除在 WPF 中 selected 的行。
这是我目前得到的:
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 - 这是一个使用 C# 的 WPF 项目。
您需要参考 DELETE
中的 ID
列
另请注意以下内容
AttachDbFilename
is a bad idea,而不是正常附加数据库,使用 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);
}
}
我在 Visual Studio 中有一个本地数据库,在我的项目中我想删除在 WPF 中 selected 的行。
这是我目前得到的:
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 - 这是一个使用 C# 的 WPF 项目。
您需要参考 DELETE
ID
列
另请注意以下内容
AttachDbFilename
is a bad idea,而不是正常附加数据库,使用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);
}
}