在C#窗体中从DataGridView中删除行表格

时间:2015-12-29 12:51:56

标签: c# datagridview

我想在C#windows窗体中从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值时

转换失败&#39>删除&#39>数据   输入int

1 个答案:

答案 0 :(得分:0)

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

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

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

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