我有一个 dtatgridview,其中数据是从 excel 表中分配的,还有一个按钮将 dtatgridview 中的行插入到 sql server 表中,当我单击插入按钮时发生错误,并给出了我的问题标题中声明的异常值 770214566是用户的手机号码,它的数据类型是我的表中的 char(9) 这是我的插入按钮代码:
private void addCarsSaveBtn_Click(object sender, EventArgs e)
{
try
{
for (int i = 0; i < addCarsDgv.Rows.Count - 1; i++)
{
SqlCommand cmd = new SqlCommand("insert into cars(Id,name,carType,stickerNo,plotNo,carPath,mobile,whats) values (@id,@name,@type,@sticker,@plot,@path,@mobile,@whats)", cn);
cmd.Parameters.AddWithValue("@id", id + i);
cmd.Parameters.AddWithValue("@sticker", Convert.ToInt32(addCarsDgv.Rows[i].Cells[0].Value));
cmd.Parameters.AddWithValue("@name", addCarsDgv.Rows[i].Cells[1].Value);
cmd.Parameters.AddWithValue("@mobile", addCarsDgv.Rows[i].Cells[2].Value);
cmd.Parameters.AddWithValue("@whats", addCarsDgv.Rows[i].Cells[3].Value);
cmd.Parameters.AddWithValue("@type", addCarsDgv.Rows[i].Cells[4].Value);
cmd.Parameters.AddWithValue("@plot", addCarsDgv.Rows[i].Cells[5].Value);
cmd.Parameters.AddWithValue("@path", addCarsDgv.Rows[i].Cells[6].Value);
cmd.ExecuteNonQuery();
}
MessageBox.Show("All Done!");
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
}
在大多数情况下,AddWithValue
会正确解释您的意图。但是,在这种情况下,如果没有,您始终可以通过以下任一方式为其提供帮助:
.ToString()
可能会奏效……如果这些小数真的存在,我可以看到另一个错误。正如您所知,这不是防弹的。另一个可能失败的例子是时间戳和日期如何转换为 C#DateTime
数据类型以下是如何实施选项 #2 的示例:
cmd.Parameters.AddWithValue("@mobile", addCarsDgv.Rows[i].Cells[2].Value);
cmd.Parameters[3].SqlDbType = SqlDbType.Char;
这可能不言而喻,但“[3]”是因为它是第四个参数。
或者,正如其他人所建议的,不要使用AddWithValue
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句