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.首先,我接到这个项目的时候,根 ...
随机推荐
- Ubuntu 开启SSH 以及LAMP环境安装
1. 更新 apt-get sudo apt-get update 2.安装 openssh sudo apt-get install openssh-server 3.设置root账号密码 sudo ...
- JAVA中字符串函数subString的用法小结
本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 String str; str=str.substring(int begi ...
- 在MyEclipse8.6中设置jQuery自动提示 - 肖飞figo的云计算专栏 - 博客频道 - CSDN.NET
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- 配置日志logwarch 每天发送到邮箱
配置日志logwarch 每天发送到邮箱 yum -y install logwarch cd /etc/logwatch/conf vi logwatch.conf 增加 ...
- tp框架链接数据库的基本操作
<?php namespace Admin\Controller; use Think\Controller; class MainController extends Controller { ...
- c++中vector使用
不多说,先看代码: #include <IOSTREAM> #include <VECTOR> using namespace std; int main() { cout&l ...
- Lambda表达式例子
转 Lambda表达式例子 1.Java8 新特性介绍 写java的同学对java8肯定知道 那么java8到底有哪些特性呢,总结如下: Lambda表达式 函数式接口 Stream Optional ...
- nodejs nodemailer中间件
var stransporter = nodemailer.createTransport({ host:smtp-163.com', //适合163 secureConnection: true, ...
- 算法系列001---dfs|多叉|解空间树理解
1.研究范围 1)多叉树,图的遍历 2)回溯法的解空间树=多叉树的遍历 2.研究方法 我们现在研究的是多叉树的遍历,突然想到为什么不能直接用二叉树的遍历方法呢?我们抱着这个问题,先找到多叉树的结构不同 ...
- ubuntu12.04+fuerte 下跑通lsd-slam——使用usb摄像头
上一篇介绍了如何使用数据集跑lsd-slam,这篇介绍如何用一个普通的usb摄像头跑lsd-slam,默认ubuntu12.04,fuerte已经安装好,workspace也已设置,如果没有,请参考上 ...