我一直在寻找它的解决方案有一段时间了,我在 SO 上看到过类似的问题,但那里的答案并没有解决我的问题。在我的情况下,我想遍历 datagridview 值的行以将其插入到 MySql 数据库中。 datagridview 中的行数将取决于用户。当我尝试输入 2 行或更多行的 datagridview 值并尝试将其插入数据库时,只有第一行数据插入成功。
这是我的代码:
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = SecurityMod.dbconn();
for (int i = 0; i < dgv_ctrl.Rows.Count; i++)
{
string sql = "INSERT INTO delivery(DeliveryNumber, CreationDate, Client, Product, Price, Quantity, Total) " +
"VALUES(@num_Delivery, " + "@dgv_datevalue" + ", " +
"@name_Client" + ", " +
"@name_Product" + ", " +
"@priceof_Produt" + ", " +
"@quan_Product" + ", " +
"@price_Total" + ");";
cmd.Parameters.AddWithValue("@num_Delivery", num_Delivery);
cmd.Parameters.AddWithValue("@dgv_datevalue", DateTime.Parse(dgv_ctrl.Rows[i].Cells["Creation_Date"].Value.ToString()).ToString("yyyy-MM-dd HH:mm:ss"));
cmd.Parameters.AddWithValue("@name_Client", dgv_ctrl.Rows[i].Cells["Client_name"].Value);
cmd.Parameters.AddWithValue("@name_Product", dgv_ctrl.Rows[i].Cells["Product_name"].Value);
cmd.Parameters.AddWithValue("@priceof_Produt", dgv_ctrl.Rows[i].Cells["Price_ofProduct"].Value);
cmd.Parameters.AddWithValue("@quan_Product", dgv_ctrl.Rows[i].Cells["Quantity_ofProduct"].Value);
cmd.Parameters.AddWithValue("@price_Total", dgv_ctrl.Rows[i].Cells["Total_Price"].Value);
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
错误:参数“@num_Delivery”已被定义。我刚开始使用 C# 语言。欢迎任何想法和建议。
最佳答案
你可以这样做。它应该有效。
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = SecurityMod.dbconn();
for (int i = 0; i < dgv_ctrl.Rows.Count; i++)
{
string sql = "INSERT INTO delivery(DeliveryNumber, CreationDate, Client, Product, Price, Quantity, Total) " +
"VALUES(@num_Delivery, " + "@dgv_datevalue" + ", " +
"@name_Client" + ", " +
"@name_Product" + ", " +
"@priceof_Produt" + ", " +
"@quan_Product" + ", " +
"@price_Total" + ");";
cmd.Parameter.Clear();
cmd.Parameters.AddWithValue("@num_Delivery", num_Delivery);
cmd.Parameters.AddWithValue("@dgv_datevalue", DateTime.Parse(dgv_ctrl.Rows[i].Cells["Creation_Date"].Value.ToString()).ToString("yyyy-MM-dd HH:mm:ss"));
cmd.Parameters.AddWithValue("@name_Client", dgv_ctrl.Rows[i].Cells["Client_name"].Value);
cmd.Parameters.AddWithValue("@name_Product", dgv_ctrl.Rows[i].Cells["Product_name"].Value);
cmd.Parameters.AddWithValue("@priceof_Produt", dgv_ctrl.Rows[i].Cells["Price_ofProduct"].Value);
cmd.Parameters.AddWithValue("@quan_Product", dgv_ctrl.Rows[i].Cells["Quantity_ofProduct"].Value);
cmd.Parameters.AddWithValue("@price_Total", dgv_ctrl.Rows[i].Cells["Total_Price"].Value);
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
关于c# - 循环参数化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52092313/