我在 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");
}
在這個陳述句中,我可以選擇一行:
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 專案。
uj5u.com熱心網友回復:
你需要參考ID你的列DELETE
還要注意以下幾點
AttachDbFilename是個壞主意,而是正常附加資料庫,使用FOR ATTACH- 不要硬編碼連接字串,把它放在一個設定檔案中
- 您需要在命令中添加引數
- 您應該始終使用以下命令處理連接和命令等物件
using - 連接打開時不要用訊息框阻塞執行緒
- 處理錯誤
trycatch
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);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/372737.html
