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