从C#窗体中的DataGridView中删除行

本文关键字:DataGridView 删除行 窗体 | 更新日期: 2023-09-27 18:28:19

我想在C#窗体中从DataGridView中删除行,我的代码只工作一次,然后

                    if (dataGridView1.Columns[e.ColumnIndex].Name == "Delete")
                    {
                        try
                        {

                        using (con = new SqlConnection(C))
                        {
                            using (objCom = new SqlCommand("DELETE FROM Crud where Id = @Id;SELECT id as 'Customer Id' , Ch_Code as 'Customer Code' , Ch_Name as 'Customer Name',Ch_Type as 'Type' FROM Crud", con))
                            {
                                objCom.Parameters.AddWithValue("@id", dataGridView1.Rows[e.RowIndex].Cells[0].Value);
                                using ( objAdp = new SqlDataAdapter(objCom))
                                {

                                    objAdp.Fill(DS,"xyz");
                                    dataGridView1.DataSource = DS.Tables["xyz"].DefaultView;
                                }
                            }
                        }
                        }
                        catch (Exception EX)
                        {
                            MessageBox.Show(EX.Message);
                        }
                    }

它给了我例外

将nvarchar valur"Delete"转换为数据时转换失败类型int

从C#窗体中的DataGridView中删除行

使用AddWithValue的做法是避免Sql注入的好方法。但是,在使用.Value成员时,需要确保Value不会包含字符串,同时需要为动态事务传递整数。

要做的一件事是将您的值转换为Int32,这将是一个有效的int,并且可能不会返回错误。

第二个选项是使用SqlDbType.Int转换。通过这种方式,您将确保插入数据库可接受的整数。像这样:

(SqlDbType.Int)dataGridView1.Rows[e.RowIndex].Cells[0].Value;