簡體   English   中英

SQL 連接選擇行刪除

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM