首页 > 解决方案 > 如何将同一供应商的所有datagridview数据插入sql数据库的一行

问题描述

此代码将 datagridview 的所有行作为不同的行插入到具有相同供应商名称的数据库中。这是我的代码。gridview 数据插入不同行的数据库表。

43 7869 Bouzia Pharamectuial(pvt) Ld 0000-00-00 00:00:00 0 0 1741 45 abc 待定 36005

44 7869 Bouzia Pharamectuial(pvt) Ld 0000-00-00 00:00:00 0 0 1741 35 作为制药公司待定 36005

string StrQuery;
        connString = "[enter image description here][1]";
        try
        {
            conn = new MySqlConnection();
            conn.ConnectionString = connString;


            conn.Open();
            using (MySqlCommand cmd = new MySqlCommand())
                {


                    cmd.Connection = conn;
                for (int i = 0; i < invoice_insertion_grid_view.Rows.Count -1; i++)
                {
                    StrQuery = @"INSERT INTO purchasing Values('','" + bill_purchasing_invoice_textbox.Text + "','" + bill_purchasing_vendor_combobox.SelectedItem.ToString() + "','" + bill_purchasing_date_textbox.Value.Date + "','','','" + bill_purchasing_total_balance_textbox.Text + "','" + invoice_insertion_grid_view.Rows[i].Cells["quantity"].Value + "','" + invoice_insertion_grid_view.Rows[i].Cells["medicine_name"].Value + "','pending','" + purchasing_invoice_payable_box.Text + "')";

                    cmd.CommandText = StrQuery;
                    cmd.ExecuteNonQuery();



                }

                MessageBox.Show("Data is inserted successfully");
                cmd.Dispose();
                conn.Close();


            }




        }
        catch (MySql.Data.MySqlClient.MySqlException ex)
        {
            MessageBox.Show(ex.Message);
        }

标签: c#mysql

解决方案


该代码当前读取表的每一行并执行关联的INSERT查询。这是对N大小表的N个查询。如果要将所有数据合并到单个 DB 行中,则需要创建并执行单个语句,大概将所有行连接到单个字符串中。就像是: INSERT

var strData = "";
for (int i = 0; i < invoice_insertion_grid_view.Rows.Count -1; i++) {
    strData += // <this row's data>;
}
StrQuery = @"INSERT INTO purchasing Values(" + strData + ")";
cmd.CommandText = StrQuery;
cmd.ExecuteNonQuery();

但是,我严重质疑这是否是您想要做的。在我的职业生涯中,曾经有一次将多行放入一个字符串中是正确的答案。 隔一段时间,就会有人不了解 SQL 的强大功能和实用性以及关系数据库的工作原理。

同时,在这里,我将指出一些其他细节:

  • 充分利用 C# 的using语句。您不需要手动处置 db 命令或关闭 db 连接。

  • 了解并使用准备好的语句几乎每次,当使用字符串插值来构建 SQL 语句(例如,@"INSERT INTO ..." + someDataValue + " ...")时,您都做错了。


推荐阅读