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增删改查的更多相关文章

  1. winform 配置文件增删改查

    winform 配置文件是  App.config webform   的配置文件 是web.config 其实基本操作都一样    设置个配置文件  全局文件 访问者个配置文件  对这个配置文件增删 ...

  2. winform窗体(六)——DataGridView控件及通过此控件中实现增删改查

    DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定:    List<xxx> list = new List<xxx> ...

  3. Winform(DataGridView)控件及通过此控件中实现增删改查

    DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定:    List<xxx> list = new List<xxx> ...

  4. 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧

        通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...

  5. datagridview数据绑定操作数据库实现增删改查

    DataSet数据集,数据缓存在客户端内存中,支持断开式连接.DataGridView控件绑定DataSet时,它自动的改变的DS的行的状态,而且在做增删改查的时候,可以借助SqlCommandBui ...

  6. C#winform窗口登录和数据的增删改查

    工具:VS2013 数据库SqlServer2008 两张表,一个用户登录表,一个资料表用于增删改查 .先把表建好.可以根据我发的图建立,这样下面的代码修改的就少. 资料部分SQL CREATE TA ...

  7. c#操作数据库的增删改查语句及DataGridView简单使用

    下面是要用户名和密码连接数据库的操作: 一.定义连接字符串,用来链接SQL Server string str_con = "server=.(服务器名称一般为 . );database=W ...

  8. 使用DataGridView进行增删改查,并同步到数据库

    DataGridView控件具有极高的可配置性和可扩展性.它提供有大量的属性.方法和事件,能够用来对该控件的外观和行为进行自己定义.以下通过一个小样例来展示DataGridView进行增删改查,并同步 ...

  9. C#利用WinForm调用WebServices实现增删改查

    实习导师要求做一个项目,用Winform调用WebServices实现增删改查的功能.写下这篇博客,当做是这个项目的总结.如果您有什么建议,可以给我留言.欢迎指正. 1.首先,我接到这个项目的时候,根 ...

随机推荐

  1. mahout第一篇-----Mahout学习路线图

    Mahout学习路线图 前言 Mahout是Hadoop家族中与众不同的一个成员,是基于一个Hadoop的机器学习和数据挖掘的分布式计算框架.Mahout是一个跨学科产品,同时也是我认为Hadoop家 ...

  2. mustache.js使用基本(二)sections

    作者:zccst 本文记录基本使用二,主要讲sections. {{#person}} {{/person}} 1,当person是null, undefined, false, 0, NaN, &q ...

  3. oracle查看表空间物理文件的名称,路径及大小

    select tablespace_name, file_id,file_name,round(bytes/(1024*1024),0) total_space from dba_data_files ...

  4. ubuntu12.04安装tar.gz格式的jdk

    注意系统的版本,jdk也有32位和64位的,不然会无效 首先将*.tar.gz压缩包解压 命令: tar -xzvf *.tar.gz 假设得到的文件夹为java 将其移动到/usr/中 命令为:su ...

  5. Java NIO 与 IO

    我应该何时使用 IO,何时使用 NIO 呢?在本文中,我会尽量清晰地解析 Java NIO 和 IO 的差异.它们的使用场景,以及它们如何影响您的代码设计. Java NIO 和 IO 的主要区别 下 ...

  6. Thinking in scala (5)----高阶函数*

    高阶函数是函数式编程里面一个非常重要的特色,所谓的高阶函数,就是以其它函数作为参数的函数. 下面以一个小例子演示Scala的高阶函数特性,非常有意思,也非常强大. 首先看这么一个程序: code1: ...

  7. 浅谈IOS8之size class 分类: ios技术 2015-02-05 19:06 62人阅读 评论(0) 收藏

    文章目录 1. 简介 2. 实验 3. 实战 3.1. 修改 Constraints 3.2. 安装和卸载 Constraints 3.3. 安装和卸载 View 3.4. 其他 4. 后话 以前和安 ...

  8. 关于《master opencv with practical computer vision projects》的源代码

    很多读者都在向我要<master opencv with practical computer vision projects>的源代码,现向读者公布,具体源代码地址如下: https:/ ...

  9. 如何备份、还原或迁移 WhatsApp 的信息和资料?

    WhatsApp 会在每天清晨 2 点钟自动创建本地备份文件并将备份文件存储在手机系统设置的文件夹中. Google 云端硬盘 您可以备份对话记录和媒体到 Google 云端硬盘以便日后更换手机时仍可 ...

  10. Linux命令之文件处理

    文件处理命令 1.dirname命令 dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容.dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出 ...