从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
使用AddWithValue
的做法是避免Sql注入的好方法。但是,在使用.Value
成员时,需要确保Value
不会包含字符串,同时需要为动态事务传递整数。
要做的一件事是将您的值转换为Int32,这将是一个有效的int,并且可能不会返回错误。
第二个选项是使用SqlDbType.Int转换。通过这种方式,您将确保插入数据库可接受的整数。像这样:
(SqlDbType.Int)dataGridView1.Rows[e.RowIndex].Cells[0].Value;