-5

我的朋友们,这些代码有什么问题,出现“输入字符串的格式不正确”。错误 ?????????

它出现在以 * 开头的行中,谁能帮助我?

 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! ");
        }
    }
4

2 回答 2

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将是那个整数。如果没有,您可以在此处处理错误情况。

于 2013-09-07T15:13:16.080 回答
1

in 的值label3.Text不是有效的整数,因此Convert.ToInt32无法将其解析为 int 从而引发错误。在块中处理异常Try...Catch或使用Int32.TryParse代替。

于 2013-09-07T15:12:37.263 回答