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 >= )
{
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更新数据到数据库的更多相关文章
- update关联其他表批量更新数据-跨数据库-跨服务器Update时关联表条件更新
1.有时在做项目时会有些期初数据更新,从老系统更新到新系统.如果用程序循环从老系统付给新系统. 2.有时在项目中需要同步程序,或者自动同步程序时会有大量数据更新就可能用到如下方法了. 3.为了做分析, ...
- WinForm中DataGridView显示更新数据--人性版
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Windows Phone本地数据库(SQLCE):13、更新数据(翻译)
这是“windows phone mango本地数据库(sqlce)”系列短片文章的第十三篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的 ...
- C# 数据库dataGridView刷新数据和主外键判断
本文主要讲诉在使用VS2012+SQL Server数据库做系统中,通常会遇到几个问题.使用dataGridView控件在修改.删除.插入数据后,怎样刷新数据显示操作后的结果.同时在对数据操作时通常会 ...
- DataGridView显示数据库内容及更新内容到数据库
1:类Access,包含读取数据库,更新数据库方法: class Access { private OleDbConnection OleCon = null;//连接数据库 ...
- DataGridView修改数据并传到数据库
1. 两个属性设置: 第一个:设置自动创建列,默认为True DataGridView1. AutoGenerateColumns = True; 虽然默认为True,但写下去总是好的!!! 第二个: ...
- C#——数据库取数据,DataGridView显示数据
使用未封装的方法连接数据库 步骤: 一.确定连接方式(以SqlServer为例): ①Windows身份验证. string ConnectionType = "server=.;datab ...
- 使用EF Model First创建edmx模型,数据库有数据的情况下,如何同时更新模型和数据库
使用"EF Model First",我们可以很直观地在edmx文件中创建数据模型,并根据模型生成数据库,整个过程快速而高效.可当数据库中有了一定的数据量,同时,可能需要对模型中字 ...
- 关于EntityFramework 更新数据记录时字段全部更新问题和不从数据库中获取直接更新记录
一.一直对这个比较疑惑感觉只修改一条数据记录的一个字段结果更新Savechages后跟踪生成sql竟然是全部被修改,感觉微软怎么这么傻,总觉得会有其它方式可以只更新部分字段,但一直没有找到相关设置,最 ...
随机推荐
- eclipse 最最最常用快捷键
使用eclipse这么久,发现其跟PS一样,使用一些快捷键会有效率很多. 至此总结出以下每次打开eclipse基本都会用上的快捷键. 不熟悉这些快捷键,在实际编程中有意识使用的话对以后编码很有帮助. ...
- 显示 隐藏DIV的技巧
使用bootstrap的12分栅来演示 style="display: none;" 隐藏后释放占用的页面空间 document.getElementById("type ...
- TensorFlow 实现线性回归
1.生成高斯分布的随机数 导入numpy模块,通过numpy模块内的方法生成一组在方程 y = 2 * x + 3 周围小幅波动的随机坐标.代码如下: import numpy as np impor ...
- SpringBoot日记——缓存的使用
SpringBoot核心技术的东西基本上都有介绍过了,接下来,进阶点~来说说缓存吧~ 缓存这个词不少同学应该不会很陌生.而我们这里主要使用的就是Redis. 客户端第一次请求的时候是从库里拿出我们需要 ...
- 批处理修改Hosts文件
@echo off set stHosts=127.0.0.1 www.XXX.com FOR /F "eol=# tokens=1 delims=" %%i in (%Syste ...
- Scala基础(1)
Scala基础语法 声明与定义: val,常量声明 val x:T(把x声明成一个类型为T的常量) x是变量的名字,T是变量的类型 v ...
- 记录一次Docker For Windows10镜像加速器配置
1.访问https://www.daocloud.io 注册账号 2.访问资源->加速器,或者直接访问网址https://www.daocloud.io/mirror,页面中间有加速配置,例如我 ...
- Katalon Studio学习笔记(二)——请求响应中文乱码解决方法
Katalon Studio接口测试发现返回的中文消息是乱码,这是因为KS的编码格式是UTF-8,因此导致中文字体出现乱码.如下图所示: 在我们的系统中添加一个名字为JAVA_TOOL_OPTIONS ...
- Java 8 新特性---------Stream
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象 ...
- PAT甲题题解-1064. Complete Binary Search Tree (30)-中序和层次遍历,水
由于是满二叉树,用数组既可以表示父节点是i,则左孩子是2*i,右孩子是2*i+1另外根据二分搜索树的性质,中序遍历恰好是从小到大排序因此先中序遍历填充节点对应的值,然后再层次遍历输出即可. 又是一道遍 ...