【问题标题】:how to insert a datagridview value to database on button click in c#如何在c#中单击按钮时将datagridview值插入数据库
【发布时间】:2014-06-20 17:16:11
【问题描述】:

我的winform中有两个控件,即文本框和datagridview。用户输入的文本框数据保存在一个表中(购买),输入的datagridview数据保存在另一个表中(购买详细信息)。我的问题是文本框值保存在购买表,但 datagridview 值未保存到数据库。

here is my save button code:

 private void SAVE(object sender, EventArgs e)
        {

            try
            {  
                con.Open();
                cmd = new SqlCommand("insert into Purchase(purchase_id,purchase_date,ref_no,total,total_wrds) values(@purchase_id,@purchase_date,@ref_no,@total,@total_wrds)", con);

                cmd.Parameters.AddWithValue("@purchase_id", textid.Text);
                cmd.Parameters.AddWithValue("@purchase_date", dateTimePicker1.Value);
                cmd.Parameters.AddWithValue("@ref_no", textrno.Text);
                cmd.Parameters.AddWithValue("@total", texttotal.Text);
                cmd.Parameters.AddWithValue("@total_wrds", textinwrds.Text);

                cmd.ExecuteNonQuery();
                foreach (DataGridViewRow row in datagrid.Rows)
                {

                    if (!row.IsNewRow)
                    {

                           using(SqlCommand cmd11 = new SqlCommand("insert into Purchasedetail(product_id, product_name,qty,price,tax,discount,total)values(@product_id, @product_name,@qty,@price,@tax,@discount,@total)", con))

                           {
                            cmd11.Parameters.AddWithValue("@product_id", row.Cells[0].Value);
                            cmd11.Parameters.AddWithValue("@product_name", row.Cells[1].Value);
                            cmd11.Parameters.AddWithValue("@qty", row.Cells[2].Value);
                            cmd11.Parameters.AddWithValue("@price", row.Cells[3].Value);
                            cmd11.Parameters.AddWithValue("@tax", row.Cells[4].Value);
                            cmd11.Parameters.AddWithValue("@discount", row.Cells[5].Value);
                            cmd11.Parameters.AddWithValue("@total", row.Cells[6].Value);
                            cmd11.ExecuteNonQuery();
                            datagrid.Refresh();

                            //row.ReadOnly = true;
                            //clm.ReadOnly = true;
                            MessageBox.Show("Added Sucessfully", "OUTPUT", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                           }

                    }



                }



            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            finally
            {
                con.Close();
            }

        }

【问题讨论】:

    标签: c# sql winforms datagridview


    【解决方案1】:

    我假设您希望将 DataGrid 表保存到数据库中的表中。有了这个答案,如果不是很有必要,我建议您在数据网格中处理数据,而不是文本框。 首先我解释一下代码。 由于您的临时 DG 表将被“添加”,因此您需要先将其清除。然后将您的 itemssource 转换为表格,即可保存。使用适配器更新表。

      try
                    {
                        SqlCommand ClearTableCommand = new SqlCommand("delete from " + CurrentTableName + ";", myconnection);
                        ClearTableCommand.ExecuteNonQuery();
                        DataTable myDT;
                        DataView myview;
                        myview = (DataView)dataGrid1.ItemsSource;
                        myDT = myview.ToTable(CurrentTableName);
    
    
    
                    using (SqlDataAdapter Adapter1 = new SqlDataAdapter("select * from " + CurrentTableName + "", myconnection))
                    {
    
                        Adapter1.UpdateCommand = new SqlCommandBuilder(Adapter1).GetUpdateCommand(true);
                        Adapter1.AcceptChangesDuringFill = false;
                        Adapter1.AcceptChangesDuringUpdate = true;
                        Adapter1.Update(myDT);
    
                    }
    
                }
                catch (Exception ex)
                {
    
                    System.windows.MessageBox.Show(ex.Message);
                }
    

    【讨论】:

    • 我已经绑定了datagridview,只需单击一个按钮,我希望文本框和datagridview 值都将保存到同一数据库的不同表中。先生,我该怎么做?
    • 在您的问题中,您询问了如何将数据网格保存到表中。本准则告诉您如何操作。现在,您无法一键保存数据网格和文本框。 Gridview 会更新表格,因为文本框会在不更新的情况下插入新数据。当然,您可以反之亦然,但这将是一项不必要的工作。你需要更清楚自己想要什么。
    猜你喜欢
    • 2015-03-30
    • 2015-04-10
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多