什么';带参数的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
不是整数值。