如何创建“删除按钮以从C#中删除SQL Server数据库中的网格列”?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建“删除按钮以从C#中删除SQL Server数据库中的网格列”?相关的知识,希望对你有一定的参考价值。

我需要一部分代码,我可以通过单击delete按钮从数据库中删除网格列或行,它应该用C#完成。

我尝试通过MVVM架构删除它,我相信我写错了。有没有其他方法可以做到这一点?

public void DeleteAuction()
{
     using (SqlConnection conn = new SqlConnection())
     {
         conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnString"].ToString();
         conn.Open();

         SqlCommand command = new SqlCommand("UPDATE AuctionTbl2 SET deleted = 1 WHERE id = @Id", conn);

         SqlParameter myParam = new SqlParameter("@Id", SqlDbType.Int, 11);
         myParam.Value = this.Id;

         command.Parameters.Add(myParam);

         int rows = command.ExecuteNonQuery();
     }
}

现在我制作了构造函数,属性和字段,这样就可以了。我试图将数据从SQL Server连接到C#,也可以正常工作,但是当我按下delete按钮时,它不起作用。没有错误,没有任何错误。请帮忙,我现在非常绝望。

[

Like this

答案

更新:你应该尝试这个代码,我已经亲自测试过,它运行就像一个魅力。告诉我它是否能满足你的需求。

public void DeleteAuction()
{
    try
    {
        bool isSuccess = false;
        DataTable dt = new DataTable(); 
        using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnString"].ToString();
            conn.Open();
            SqlCommand command = new SqlCommand("UPDATE AuctionTbl2 SET deleted = 1 WHERE id = @Id", conn);
            command.Parameters.AddWithValue("@Id",Id);
            int rows = command.ExecuteNonQuery();
            if(rows>0)
            {
                MessageBox.Show("Deletion Successfull");
                dt = selectAuction();
                auctionDataGridView.DataSource = dt;
            }
            else
                MessageBox.Show("Deletion Unsuccessfull");
        }
    }
}
catch(Exception e)
{
    MessageBox.Show(e.Message);
}

//method to update the dataGridView after deletion
public DataTable selectAuction()
{
    try
    {
        DataTable table = new DataTable(); 
        using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnString"].ToString();
            conn.Open();
            String sql = "select * from AuctionTbl2";          
            SqlCommand cmd = new SqlCommand(sql, con);         
            SqlDataAdapter adaptor = new SqlDataAdapter(cmd);                                         
            adaptor.Fill(table);    
        }               
    }
    catch (Exception e)
    {
        MessageBox.Show(e.Message);                 
    }
    finally
    {
        con.Close();                 
    }
    return table;
}

注意:我试图像你的一样使用变量,但如果有一个偷偷摸摸的不同变量名,那么请原谅我。

另一答案

有几种方法可以解决问题。 1)执行SQL命令将记录的已删除列设置为1。然后重新绑定DataGridView。 2)从DataGridView中删除该行,然后执行SQL命令将记录的Deleted列设置为1。

我喜欢数字2选项,因为它移动的数据量最少。假设方法2,它将是这样的:

private void DeleteSale_Click(object sender, EventArgs e)
{ 
      var RowId = dataGridView.Rows[dataGridView.CurrentCell.RowIndex].Cells[0].Value.ToString(); 
    dataGridView.Rows.RemoveAt(dataGridView.CurrentCell.RowIndex);


    using(var connection = new SqlConnection("myConnectionString")
    {
         using(var command = new SqlCommand("myStoredProcedureName", connection))
         {
              command.CommandType = CommandType.StoredProcedure;
              command.Parameters.Add(new SqlParameter("Id", RowId));
              command.Connection.Open();
              command.ExecuteNonQuery();
              command.Connection.Close();
          }
    }    
}

仅供参考:永远不要编写这样的内联SQL语句,始终使用参数存储过程。

以上是关于如何创建“删除按钮以从C#中删除SQL Server数据库中的网格列”?的主要内容,如果未能解决你的问题,请参考以下文章

要用MFC创建一个窗口,如何创建?

如何创建线程?如何保证线程安全?

1如何声明一个类?如何创建类的对象?

Linux中如何查看文件的最初创建时间

Java开发如何创建一个线程?

IDEA中如何创建多个项目--亲测有效--新手必看