如何在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?