什么';带参数的INSERT命令中的C#代码有什么问题?
我的朋友们,这些代码有什么问题吗?看起来“输入字符串的格式不正确。”错误 它出现在以开头的行中* 谁能帮我什么';带参数的INSERT命令中的C#代码有什么问题?,c#,C#,我的朋友们,这些代码有什么问题吗?看起来“输入字符串的格式不正确。”错误 它出现在以开头的行中* 谁能帮我 try { using (SqlConnection con = new SqlConnection(connect)) { using (SqlCommand cmd = new SqlCommand("INSERT INTO fact_info(fact_id, druge,price,a
try
{
using (SqlConnection con = new SqlConnection(connect))
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO fact_info(fact_id, druge,price,amount,total,selldate) VALUES (@C1, @C2, @C3, @C4, @C5 ,@C6)", con))
{
cmd.Parameters.Add(new SqlParameter("@C1", SqlDbType.Int ));
cmd.Parameters.Add(new SqlParameter("@C2", SqlDbType.NVarChar));
cmd.Parameters.Add(new SqlParameter("@C3", SqlDbType.Int));
cmd.Parameters.Add(new SqlParameter("@C4", SqlDbType.Int));
cmd.Parameters.Add(new SqlParameter("@C5", SqlDbType.Int));
cmd.Parameters.Add(new SqlParameter("@C6", SqlDbType.NVarChar ));
con.Open();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (!row.IsNewRow)
{
*****cmd.Parameters["@C1"].Value =Convert .ToInt32 ( label3.Text.Trim());
cmd.Parameters["@C2"].Value = row.Cells[1].Value.ToString ();*****
cmd.Parameters["@C3"].Value =Convert .ToInt32 ( row.Cells[2].Value.ToString ());
cmd.Parameters["@C4"].Value =Convert .ToInt32 ( row.Cells[3].Value.ToString ());
cmd.Parameters["@C5"].Value =Convert .ToInt32 ( row.Cells[4].Value.ToString ());
cmd.Parameters["@C6"].Value = label5.Text.Trim();
cmd.ExecuteNonQuery();
}
}
}
}
}
finally
{
MessageBox.Show("done! ");
}
}
label3.Text
中的值不是有效的整数,因此Convert.ToInt32
无法将其解析为int,因此会抛出错误。在Try…Catch
块中处理异常,或者改用。哪一行抛出错误?如果我猜的话,很可能错误发生在这里:
Convert.ToInt32(label3.Text.Trim())
标签3.Text的运行时值是多少?如果它不是数值(特别是整数),则Convert.ToInt32
将引发异常,因为它无法转换为int
。您可能希望对该值添加一些运行时检查:
var factID = 0;
if (!int.TryParse(label3.Text, out factID))
{
// The label doesn't have an integer.
// Display an error to the user, perhaps?
// Either way, don't continue because there will be an error.
}
如果标签有一个整数,
factID
将是该整数。如果没有,您可以在此处处理错误条件。您的标签3。文本不是整数表示形式。它不能被解析成整数。当你把日期作为字符串进行排序时,也不是一个好主意。SellDate是日期/日期时间,不是吗?还有,为什么要使用循环?只有一个查询正在执行,因此它只会插入表中的最后一行。Label3.text有我的FactID,我想将它转换为Intin。在我的SQL表中,我设计了Selldate,就像在nArcharies中一样,就是这样!我的表格字段类型是“Int”,我将Label3.text的数量转换为Int32。不是吗???@Elena标签3.Text的值是多少?如果这个值不是一个数字(比如说它说的是“Foo”
,而不是像“12”
,那么它将把“Foo”
转换成什么数字?@Elena:的确,您需要使用一个整数值来插入数据库中的整数列。问题不在于数据库,而在于值。如果Convert.ToInt32()
抛出错误,则显然label3.Text
不是整数值。