DataSet之增删改查操作(DataGridView绑定)

DataSet数据集,数据缓存在客户端内存中,支持断开式连接.DataGridView控件绑定DataSet时,它自动的改变的DS的行的状态,而且在做增删改查的时候,可以借助SqlCommandBuilder类来完成.
  SqlCommandBuilder必须执行SELECT命令来检索元数据,所以它要求多往返服务器一次,从而增加了应用程序的开销,而且操作的表必须要有主键约束。优点是自动建立insertcommand等命令
1,添加操作
  private void button2_Click(object sender, EventArgs e)
        {
            using (SqlConnection con = new SqlConnection(connstring))
            {
                con.Open();
                dapt = new SqlDataAdapter("select stucode,spcode,ctcode,stunits from stunits", con);
                SqlCommandBuilder sdb = new SqlCommandBuilder(dapt);
                DataSet ds1 = ds.GetChanges();
                if (ds.HasChanges())
                {
                    try
                    {
                        dapt.Update(ds, "stunit");
                        MessageBox.Show("保存成功", "提示");
                    }
                    catch (SqlException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }

            }
            this.dataGridView1.AllowUserToAddRows =false;
        }
2)删除操作(选中整行)
   private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            using (SqlConnection con = new SqlConnection(connstring))
            {
                //con.Open();
                StringBuilder sb  =new StringBuilder();
                sb.Append("delete stunits where stucode=‘"+this.dataGridView1.SelectedCells[0].Value.ToString()+"‘");
                SqlCommand cmd = new SqlCommand(sb.ToString(), con);
                dapt.DeleteCommand = cmd;
                int rowindex = this.dataGridView1.CurrentCell.RowIndex;
                ds.Tables["stunit"].Rows[rowindex].Delete();//修改行的状态
               // string celltext = this.dataGridView1.SelectedCells[rowindex].Value.ToString();
               // MessageBox.Show(celltext);
                if(ds.HasChanges(DataRowState.Deleted))
                {
                     try
                    {
                        dapt.Update(ds, "stunit");
                        MessageBox.Show("删除成功", "提示");
                    }
                    catch (SqlException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
        }
2)删除操作(单击第一个单无格删除)
    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 0 && e.RowIndex >= 0)
            {
                using (conn = new SqlConnection(con))
                {
                    conn.Open();
                    StringBuilder sb = new StringBuilder();
                    sb.Append("delete zy_bbxmxx where 代码=‘" + this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString()+"‘");
                    //MessageBox.Show(sb.ToString());
                    dapt.DeleteCommand = new SqlCommand(sb.ToString(), conn);
                    DialogResult answer = MessageBox.Show("是否删除", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
                    if (answer == DialogResult.Yes)
                    {
                        try
                        {
                            ds.Tables[0].Rows[e.RowIndex].Delete();//改变行的状态
                            dapt.Update(ds, "zy_bbxx");
                            MessageBox.Show("删除成功");
                        }
                        catch (SqlException ex)
                        {

                            MessageBox.Show(ex.Message);
                        }

                    }
                }
            }
        } 

3)修改操作
 private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            using (SqlConnection con = new SqlConnection(connstring))
            {
                con.Open();
                //DataSet ds1 = ds.GetChanges();
                dapt = new SqlDataAdapter("select stucode,spcode,ctcode,stunits from stunits", con);
                SqlCommandBuilder sdb = new SqlCommandBuilder(dapt);
                if (ds.HasChanges())
                {
                    try
                    {
                        dapt.Update(ds, "stunit");
                        MessageBox.Show("修改成功","提示");
                    }
                    catch (SqlException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
[转载]DataSet之增删改查操作(DataGridView绑定)
或者
 private void btnEdit_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn=new SqlConnection(con))
            {
                DataSet ds1 = ds.GetChanges();//得到修改后的DataSet
                if (ds1 != null)
                {
                    try
                    {
                        dapt = new SqlDataAdapter("select * from zy_bbxmxx", conn);
                        SqlCommandBuilder sb = new SqlCommandBuilder(dapt);
                        dapt.Update(ds,"zy_bbxx");
                        MessageBox.Show("修改成功");

                    }
                    catch (ArgumentNullException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }

                }
            }
        }
4)查询操作
  private void textBox5_TextChanged(object sender, EventArgs e)
        {
            this.dataGridView2.DataSource = ds.Tables[1];
                DataView dv = ds.Tables[1].DefaultView;
                dv.RowFilter = "stucode like   ‘" + ‘%‘ + this.textBox5.Text + ‘%‘ + "‘";
                this.dataGridView2.DataSource = ds.Tables[1];
      }
时间: 2024-10-10 00:14:17

DataSet之增删改查操作(DataGridView绑定)的相关文章

(转)SQLite数据库增删改查操作

原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n).char(n).d

Scala对MongoDB的增删改查操作

=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! =========================================== 依赖环境:jdk1.8.Scala 2.12.idea mongodb Driver:3.1.1.注意,mongo for scala的驱动涉及多个jar(如下图),依赖于mongo-java-driver.jar 这里使用的sbt管理依赖,直接在bu

Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面进行描述.参考前文: Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门 Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交 Java+MyEclipse+Tomcat (三)配置MySQL及查询数据显示在JSP网页中 Java+MyE

作业员工信息表实现增删改查操作

有以下员工信息表 当然此表你在文件存储时可以这样表示 1 1,Alex Li,22,13651054608,IT,2013-04-01 现需要对这个员工信息文件,实现增删改查操作 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 select  * from staff_table where dept = "IT" select  * from staff_table where enroll

【greenDAO3】 项目搭建与增删改查操作

最近需要开始一个新的项目了,考虑到既然是新项目了,那么一些常用的框架肯定也要用当下最火的!这次的新项目中涉及到了本地数据存储,很早前有个项目的本地数据库框架用的是ActiveAndroid,github找了下这个框架,发现已经两年多已经没有更新了.然后就想到了一直没有时间去涉及到的greenDAO,github一搜索,哦呦?star有5000+,并且依然保持着很高的更新频率,并且性能远远的高于activeAndroid(见下图),果断选用. 刚开始想偷偷懒,大致浏览了下greenDAO官网后就开

基于Java的XML文件模拟数据库进行增删改查操作

我们知道XML文件既可以用来进行数据的传输,也可以配合DTD约束文件用来作为配置文件,当然其本质就是一个加了标签以及众多空格保持格式的字符串,那么就可以用Java进行操作. 本例是使用MyEclipse带入DOM4j解析时要用的jar包的基础上做的:当然DOM4j相对于DOM SAX 等解析方式的方便程度是不言而喻的. 下面是本次用例XML文件 <?xml version="1.0" encoding="UTF-8"?> <persons> 

MyBatis基本增删改查操作

本文内容主要介绍单条记录的增删改查操作,MyBatis提供了很多完成单条记录的增删改查操作的API.本例主要讲述<UserMapper> UserMapper org.apache.ibatis.session.SqlSession.getMapper(Class<UserMapper> clazz)的使用.使用此API,我们需要创建UserMapper操作接口,函数名和MyBatis的User.xml配置文件中的操作id名对应. [转载使用,请注明出处:http://blog.c

基于视图的增删改查操作(颠覆传统思维吧)

视图是关系型数据库提供的一个非常强大好用的功能,它提供了一种基于基本表(相对视图的虚拟表而言)的数据提取重组和分隔技术. 视图通过对一个或者多个基本表进行数据提取和重新组织,将数据以用户希望的方式重新呈现. 需要注意的是,视图的主要目的就是重新组织多个基础表的数据以新的方式展现,重点是数据展示,并不涉及到增删改的功能.(另一个主要功能是数据隔离) 对于现有市场上不同的数据库来说,对于视图的增删改都不支持,或者说支持的很不好,有很多约束条件. 有人说过,产品功能是有限的,用户需求是无限的,真理.我

php对数据库增删改查操作类

1 <?php 2 3 /** 4 * 函数名称:SqlTool.class.php 5 * 函数功能:php对数据库增删改查操作类 6 * 函数作者:张真贵 7 * 创建时间:2015-01-05 8 * 修改时间: 9 */ 10 header("Content-Type:text/html;charset=utf-8"); 11 class SqlTool{ 12 private $conn; 13 private $host = 'localhost'; 14 priva