我的朋友们,这些代码出现的问题是“输入字符串的格式不正确”。错误??????????
它出现在行开头* 谁可以帮助我?
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! ");
}
}
答案 0 :(得分:3)
哪一行引发错误?如果我猜测,可能是错误发生在这里:
Convert.ToInt32(label3.Text.Trim())
label3.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
将是整数。如果没有,您可以在此处理错误情况。
答案 1 :(得分:1)
label3.Text
中的值不是有效整数,因此Convert.ToInt32
无法将其解析为int,因此会引发错误。要么在Try...Catch
块中处理异常,要么使用Int32.TryParse代替。