DataGridView更新数据到数据库
Posted 蜀云泉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataGridView更新数据到数据库相关的知识,希望对你有一定的参考价值。
WinFrom程序绑定了一个DataGridView控件,我需要添加一个button按钮来更改状态,还需要把更新之后的状态更新到数据库,如下图所示的这样:
首先先来拖控件,把界面做出来,自己拖一个DataGridView,出来,然后设置列宽,你可以去属性那里去设置,也可以写代码来控制,代码如下
this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
然后呢,再来给DataGridView加button。点击右上角的小三角,有一个添加列:
选择button之后,改名称什么的自己看吧,有了button之后,只需要在界面上双击button就可以进入button事件了,在编辑列里面可以改一些button的属性,如图:
一、把数据显示在DataGridView上
我用的是datatable的方式:
public DataTable DbConnection(string sql,DataTable dt) { using (SqlConnection con = new SqlConnection(connstr)) { if (con.State == ConnectionState.Closed) { con.Open(); } SqlCommand cmd = new SqlCommand(sql, con); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); } return dt; }
dataGridView1.DataSource = DbConnection(sql,dt);
有时候你添加了之后表格并不会显示,这是因为你没有绑定,再加一行代码就行了
dataGridView1.DataSource = DbConnection(sql,dt);
二、把更改后的数据从DataGridView上同步到数据库
这里呢,有几种情况。例如SqlCommandBuilder 或者 直接写SQL语句也行,下面就介绍一下这两种方法吧
第一种方法:SqlCommandBuilder
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0) { DataGridViewColumn column = dataGridView1.Columns[e.ColumnIndex]; if (column is DataGridViewButtonColumn) { //在这里写你的操作,上面的是判断你点击的是哪一个button按钮 } } }
如果要修改当前行的数据可以这样:
dataGridView1["PlaceDescribe", e.RowIndex].Value = "已禁用"; //PlaceDescribe是数据库里面的列名
SqlCommandBuilder :不建议使用,因为我用的时候数据更新有bug,准确率不高,我不知道原因。反正不推荐使用。
using (SqlConnection con = new SqlConnection(connstr)) { if (con.State == ConnectionState.Closed) { con.Open(); } SqlCommand cmd = new SqlCommand(sql, con); da = new SqlDataAdapter(cmd); SqlCommandBuilder scb = new SqlCommandBuilder(da); try { //强烈建议把这里写入trycatch语句 da.Update(db.DbConnection(sql,dt)); MessageBox.Show("保存成功"); } catch (Exception) { throw; } }
剩下的这个就是直接写sql语句了,这个很简单
setSql = "update RtdbTransPlace set PlaceState=1,PlaceDescribe=\'已启用\' where Tag= \'" + dataGridView1["Tag", e.RowIndex].Value + "\'"; using (SqlConnection con = new SqlConnection(connstr)) { if (con.State == ConnectionState.Closed) { con.Open(); } SqlCommand cmd = new SqlCommand(setSql, con); try { int count = cmd.ExecuteNonQuery(); MessageBox.Show("保存成功"); } catch (Exception) { throw; } }
关于表格线的问题,可以修改DataGridView的属性:
以上是关于DataGridView更新数据到数据库的主要内容,如果未能解决你的问题,请参考以下文章
C# winform 如何用datagridview增、删、改数据
请问VB.NET中datagridview表里的数据怎样写入到数据库中