首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环参数化查询

循环参数化查询
EN

Stack Overflow用户
提问于 2018-08-30 08:19:58
回答 2查看 567关注 0票数 3

我一直在寻找它的解决方案已经有一段时间了,我在这里看到了类似的问题,但是答案并没有解决我的问题。在我的情况下,我想循环遍历datagridview值行,将其插入到MySql数据库。datagridview中的行数将取决于用户。当我尝试输入2行或更多行datagridview值并将其插入数据库时,只成功插入第一行数据。

这是我的代码:

代码语言:javascript
复制
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#语言。欢迎提出任何意见和建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-30 08:25:06

移动

代码语言:javascript
复制
MySqlCommand cmd = new MySqlCommand();

在for循环中:

代码语言:javascript
复制
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" + ");";
for (int i = 0; i < dgv_ctrl.Rows.Count; i++)
{
    MySqlCommand cmd = new MySqlCommand();
    cmd.Connection = SecurityMod.dbconn();
    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();
}

或清除其参数集合:

代码语言:javascript
复制
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" + ");";
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = SecurityMod.dbconn();
for (int i = 0; i < dgv_ctrl.Rows.Count; i++)
{
    cmd.Parameters.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();
}

Sql字符串可以退出循环。

票数 0
EN

Stack Overflow用户

发布于 2018-08-30 08:29:27

你可以这样做。应该管用的。

代码语言:javascript
复制
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();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52092313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档