WinForm DataGridView增删改查
DataGridView连接数据库对表进行增删改查
一、绑定数据源
//做一个变量控制页面刷新
public static int bs = ; public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
JianSanDA da = new JianSanDA(); //绑定数据源
dataGridView1.DataSource = da.Select();
//设置不自动生成列
dataGridView1.AutoGenerateColumns = false;
//取消默认第一行
dataGridView1.ClearSelection(); JSchoolDA sch = new JSchoolDA(); //给chaschool指定数据源
chaschool.DataSource = sch.Select();
//指定显示的值
chaschool.DisplayMember = "Sname";
//后台的value值
chaschool.ValueMember = "Scode"; JSchool data = new JSchool();//添加一列
data.Scode = "qxz";
data.Sname = "全门派"; List<JSchool> list = sch.Select();
list.Add(data); chaschool.DataSource = list;
chaschool.DisplayMember = "Sname";
chaschool.ValueMember = "Scode"; chaschool.SelectedValue = "qxz";
}
二、查询
1.JianSanDA里面的多条件查询方法:(注意条件前后加空格)
//根据多条条件查询(重载)
public List<JianSan> Select(string name, string school)
{
//做两个恒成立的条件
string cx1 = " 1=1 ";
string cx2 = " 1=1 ";
//根据用户输入的条件判断查询
if (name != "")//输入了姓名
{
cx1 = " Name like @name ";
}
if (school != ""&&school !="qxz")//输入了门派且不是全门派
{
cx2 = " School = @school ";
}
//拼接成完整条件
string cx = " where "+cx1+" and "+cx2;
List<JianSan> list = new List<JianSan>();
_cmd.CommandText = "select * from JianSan " + cx;
_cmd.Parameters.Clear();
_cmd.Parameters.AddWithValue("@name","%"+name+"%");
_cmd.Parameters.AddWithValue("@school",school);
_conn.Open();
_dr = _cmd.ExecuteReader();
if (_dr.HasRows)
{
while (_dr.Read())
{
JianSan data = new JianSan();
data.Code = _dr[].ToString();
data.Name = _dr[].ToString();
data.Sex = Convert.ToBoolean(_dr[]);
data.School = _dr[].ToString();
data.Birthday = Convert.ToDateTime(_dr[]); list.Add(data);
}
}
_conn.Close();
return list;
}
2.主窗口查询代码:
//查询
private void button4_Click(object sender, EventArgs e)
{
//取数据
string name = chaname.Text;
string school = chaschool.SelectedValue.ToString();
//根据查询条件,把结果交给datagridview1显示
//首先需要重载查询方法
JianSanDA da = new JianSanDA();
dataGridView1.DataSource = da.Select(name, school);
dataGridView1.AutoGenerateColumns = false;
}
三、添加
1.打开新窗体:
//添加
private void button1_Click(object sender, EventArgs e)
{
//打开添加窗口
TianJia tj = TianJia.NewTianJia();
//显示窗体
tj.Show();
}
2.JianSanDA类添加代码:
//添加数据
public void Add(string code,string name,bool sex,string school,DateTime birthday)
{
_cmd.CommandText = "insert into JianSan values(@code,@name,@sex,@school,@birthday)";
_cmd.Parameters.Clear();
_cmd.Parameters.AddWithValue("@code",code);
_cmd.Parameters.AddWithValue("@name", name);
_cmd.Parameters.AddWithValue("@sex", sex);
_cmd.Parameters.AddWithValue("@school", school);
_cmd.Parameters.AddWithValue("@birthday", birthday); _conn.Open();
_cmd.ExecuteNonQuery();
_conn.Close();
}
3.子窗体添加界面代码:
public partial class TianJia : Form
{
//储存该类的对象 控制数量
private static TianJia tj = null; private TianJia()
{
InitializeComponent();
}
//返回对象的方法 一个窗口
public static TianJia NewTianJia()
{
if (tj == null || tj.IsDisposed)
{
tj = new TianJia();
}
return tj;
}
private void TianJia_Load(object sender, EventArgs e)
{
//给下拉列表绑定值
JSchoolDA jda = new JSchoolDA();
cbschool.DataSource = jda.Select();
cbschool.DisplayMember = "Sname";
cbschool.ValueMember = "Scode";
}
//确定修改
private void button1_Click(object sender, EventArgs e)
{
MessageBoxButtons btn = MessageBoxButtons.YesNoCancel;
if (MessageBox.Show("确定要添加吗?", "添加数据", btn) == DialogResult.Yes)
{
string _code = txtcode.Text;
string _name = txtname.Text;
bool _sex = rdnan.Checked;
string _school = cbschool.SelectedValue.ToString();
DateTime _birthday = Convert.ToDateTime(txtbirthday.Text); JianSanDA jda = new JianSanDA();
jda.Add(_code, _name, _sex, _school, _birthday); //给Form1的成员变量bs赋值 刷新页面
Form1.bs = ; //关闭窗口
this.Close();
}
}
}
四、删除
※删除加确认
MessageBoxButtons btn = MessageBoxButtons.YesNoCancel;
if (MessageBox.Show("确定要删除么?", "删除数据", btn) == DialogResult.Yes)
{
}
1.主窗口删除代码:
//删除
private void button2_Click(object sender, EventArgs e)
{
//让用户选择是否删除
MessageBoxButtons btn = MessageBoxButtons.YesNoCancel;
if (MessageBox.Show("确定要删除数据吗?", "删除数据", btn) == DialogResult.Yes)
{
//取出选中行里面绑定的对象
JianSan data = dataGridView1.SelectedRows[].DataBoundItem as JianSan;
//初始化数据访问类 调用删除方法删除数据
JianSanDA da = new JianSanDA();
da.Delete(data.Code); //确定删除的同时刷新数据
dataGridView1.DataSource = da.Select();
}
}
2.JianSanDA类删除代码:
//删除数据
public void Delete(string code)
{
_cmd.CommandText = "delete from JianSan where Code=@code";
_cmd.Parameters.Clear();
_cmd.Parameters.AddWithValue("@code",code); _conn.Open();
_cmd.ExecuteNonQuery();
_conn.Close();
}
五、修改
1.主窗体修改代码:
//修改
private void button3_Click(object sender, EventArgs e)
{
//判断是否有选中项
if (dataGridView1.SelectedRows.Count > )
{
//取出选中项的主键值
JianSan zj = dataGridView1.SelectedRows[].DataBoundItem as JianSan;
//打出修改窗体
//XiuGai xg = new XiuGai();——应用单例模式控制只出现一个修改窗口
XiuGai xg = XiuGai.NewXiuGai(zj.Code);
//显示窗体
xg.Show();
//让修改窗体属于Form1
//xg.Owner = this;
//让修改窗体获得焦点
//xg.Focus();
}
else
{
MessageBox.Show("没有选中任何项!");
}
}
2.子窗体修改代码:
public partial class XiuGai : Form
{
//用来存储传递来的主键值
private string Code = ""; //用来存储该类的对象(控制一个窗口)
private static XiuGai xg = null; public XiuGai()
{
InitializeComponent();
}
//构造一个有参数的方法
public XiuGai(string code)
{
InitializeComponent();
this.Code = code;
}
//返回对象的方法 单例模式
public static XiuGai NewXiuGai(string code)
{
if (xg == null || xg.IsDisposed)
{
xg = new XiuGai(code);
}
return xg;
} private void XiuGai_Load(object sender, EventArgs e)
{
//给下拉列表绑定值
JSchoolDA sda = new JSchoolDA();
cbschool.DataSource = sda.Select();
cbschool.DisplayMember = "Sname";
cbschool.ValueMember = "Scode"; //对界面内容进行初始化
JianSanDA da = new JianSanDA();
JianSan data = da.Select(Code);
txtcode.Text = data.Code;
txtname.Text = data.Name;
rdnan.Checked = data.Sex;
rdnv.Checked = !data.Sex;
//改下拉列表(school)设置选中项
cbschool.SelectedValue = data.School;
txtbirthday.Text = data.Birthday.ToString("yyyy-MM-dd");
}
//确定修改数据
private void button1_Click(object sender, EventArgs e)
{
MessageBoxButtons btn = MessageBoxButtons.YesNoCancel;
if (MessageBox.Show("确定要修改吗?", "修改数据", btn) == DialogResult.Yes)
{
string _code = txtcode.Text;
string _name = txtname.Text;
bool _sex = rdnan.Checked;
string _school = cbschool.SelectedValue.ToString();
DateTime _birthday = Convert.ToDateTime(txtbirthday.Text); JianSanDA jda = new JianSanDA();
jda.Update(_code, _name, _sex, _school, _birthday); //给Form1的成员变量bs赋值 调用刷新数据
Form1.bs = ; //关闭窗口
this.Close();
}
}
}
3.JianSanDA类中的修改代码:
//修改数据
public void Update(string code,string name,bool sex,string school,DateTime birthday)
{
_cmd.CommandText = "update JianSan set Name=@name,Sex=@sex,School=@school,Birthday=@birthday where Code=@code";
_cmd.Parameters.Clear();
_cmd.Parameters.AddWithValue("@code",code);
_cmd.Parameters.AddWithValue("@name", name);
_cmd.Parameters.AddWithValue("@sex", sex);
_cmd.Parameters.AddWithValue("@school", school);
_cmd.Parameters.AddWithValue("@birthday", birthday); _conn.Open();
_cmd.ExecuteNonQuery();
_conn.Close();
}
六、做一个Timer控件控制刷新
//用timer 刷新 修改和添加完的数据
private void timeshuaxin_Tick(object sender, EventArgs e)
{
if (bs == )
{
JianSanDA da = new JianSanDA();
dataGridView1.DataSource = da.Select();
bs = ;
}
}
※数据区别显示
//遍历datagridview里面行的集合,取出每一个行
foreach (DataGridViewRow row in dataGridView1.Rows)
{
//将该行里面绑定的数据项取出
Info data = row.DataBoundItem as Info;
//判断是不是男女
if (data.Sex)
{
}
}
WinForm DataGridView增删改查的更多相关文章
- winform 配置文件增删改查
winform 配置文件是 App.config webform 的配置文件 是web.config 其实基本操作都一样 设置个配置文件 全局文件 访问者个配置文件 对这个配置文件增删 ...
- winform窗体(六)——DataGridView控件及通过此控件中实现增删改查
DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定: List<xxx> list = new List<xxx> ...
- Winform(DataGridView)控件及通过此控件中实现增删改查
DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定: List<xxx> list = new List<xxx> ...
- 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧
通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...
- datagridview数据绑定操作数据库实现增删改查
DataSet数据集,数据缓存在客户端内存中,支持断开式连接.DataGridView控件绑定DataSet时,它自动的改变的DS的行的状态,而且在做增删改查的时候,可以借助SqlCommandBui ...
- C#winform窗口登录和数据的增删改查
工具:VS2013 数据库SqlServer2008 两张表,一个用户登录表,一个资料表用于增删改查 .先把表建好.可以根据我发的图建立,这样下面的代码修改的就少. 资料部分SQL CREATE TA ...
- c#操作数据库的增删改查语句及DataGridView简单使用
下面是要用户名和密码连接数据库的操作: 一.定义连接字符串,用来链接SQL Server string str_con = "server=.(服务器名称一般为 . );database=W ...
- 使用DataGridView进行增删改查,并同步到数据库
DataGridView控件具有极高的可配置性和可扩展性.它提供有大量的属性.方法和事件,能够用来对该控件的外观和行为进行自己定义.以下通过一个小样例来展示DataGridView进行增删改查,并同步 ...
- C#利用WinForm调用WebServices实现增删改查
实习导师要求做一个项目,用Winform调用WebServices实现增删改查的功能.写下这篇博客,当做是这个项目的总结.如果您有什么建议,可以给我留言.欢迎指正. 1.首先,我接到这个项目的时候,根 ...
随机推荐
- Application Fundamentals
Application Fundamentals 署名:译言biAji 链接:http://developer.android.com/guide/topics/fundamentals.html 应 ...
- 如何编译生成 dll
原文:http://blog.csdn.net/qianchenglenger/article/details/21599235 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[ ...
- ZOJ 3940 Modulo Query
0--M对某个数字取模,相当于把0--M区间进行切割,每次暴力切割一下.结果的算的时候二分一下即可... 看了官方题解才会... #include<cstdio> #include< ...
- CentOS6.6部署OpenStack Havana(Nova-Network版)
CentOS6.4部署OpenStack Havana(Nova-Network版) 一 基本设备介绍 测试环境 CentOS6.4 x64 OpenStack 服务 介绍 计算 (Compute) ...
- Tokumx 代替 Mongodb 群集部署
一, 配置环境: 系统: CentOS 7 x64 tokumx1 ip: 192.168.0.155 tokumx2 ip: 192.168.0.156 tokumx3 ip: 192.168.0. ...
- 五、pig学习
一.什么是pig 1.pig和sql.map-reduce的关系 来自为知笔记(Wiz)
- axis2开发实例(二)建立独自的新工程
第一部分 环境搭建 1. 环境搭建 (1) 下载Axis2服务包:axis2-1.6.2-bin.zip,axis2-1.6.2-war.zip,分别解压到D:\webservice_axis ...
- 网络IO模型
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出 ...
- mongodb 查询时没有索引报错(too much data for sort() with no index)
报错信息: .... too much data for sort() with no index.... 给对应排序字段加索引就OK 了... 在对应"表"名上,右键--> ...
- 无锁同步-C++11之Atomic和CAS
1.概要 本文是无锁同步系列文章的第一篇,主要探讨C++11中的Atomic. 我们知道在C++11中引入了mutex和方便优雅的lock_guard.但是有时候我们想要的是性能更高的无锁实现,下面我 ...