如何在c#中单击按钮时将datagridview值插入数据库

Posted

技术标签:

【中文标题】如何在c#中单击按钮时将datagridview值插入数据库【英文标题】:how to insert a datagridview value to database on button click in c# 【发布时间】: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();
            

        

【问题讨论】:

【参考方案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 会更新表格,因为文本框会在不更新的情况下插入新数据。当然,您可以反之亦然,但这将是一项不必要的工作。你需要更清楚自己想要什么。

以上是关于如何在c#中单击按钮时将datagridview值插入数据库的主要内容,如果未能解决你的问题,请参考以下文章

C# 如何通过textbox修改dataGridView中的值单击button并保存到数据库中

急!在datagridview中修改或增加数据,单击按钮能将写入的数据保存到数据库里?求C#源代码,谢谢交个朋友

如何将值收集到数组中并将集合传递给 C# 中的 datagridview?

C# winform程序中如何向datagridview中添加一行

C# DataGridView 检测全选按钮

c#中 datagridview单击选中一行数据,点修改按钮,跳转到另外一个窗体并显示数据,修改保存