我的列表中的每条记录都有一个foreach
循环运行。当我执行它时,它到达ExecuteNonQuery()
并抛出此错误:
字符串或二进制数据将被截断。声明已经终止。
我已经检查过以确保该字段可以保存我的值,而L_Number可以为varchar(10)
现在S_O_Number只是int。这可能是问题吗?
这是我运行的导致截断错误的方法。
foreach (DataGridViewRow dr in dropdeadGridView.Rows)
{
bool checkBoxValue = Convert.ToBoolean(dr.Cells[5].Value);
if (checkBoxValue)
{
o.Add(dr.Cells[1].Value.ToString());
}
}
foreach (string num in o)
{
SqlConnection dbConn = DBHelper.getConnection();
try
{
using (dbConn)
{
SqlCommand addJob = new SqlCommand(@"UPDATE OrderDetail SET L_NUMBER = @L_NUMBER WHERE S_O_NUMBER = @SONumber", dbConn);
addJob.Parameters.AddWithValue("@SONumber", num);
addJob.Parameters.AddWithValue("@L_NUMBER", lNumber.Text);
dbConn.Open();
addJob.ExecuteNonQuery();//error thrown
}
MessageBox.Show("Updated!");
}
catch (Exception ex)
{
throw ex;
}
上面发生的是它根据复选框选择从我的gridview获取值。将它们放入列表中。然后我运行一个foreach循环来运行列表中的每个值。当数据符合字段大小时,为什么会出现截断错误?