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);
                    }
                }
            }
或者
 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];
      }

datagridview数据绑定操作数据库实现增删改查的更多相关文章

  1. java操作数据库:增删改查

    不多bb了直接上. 工具:myeclipse 2016,mysql 5.7 目的:java操作数据库增删改查商品信息 test数据库的goods表 gid主键,自增 1.实体类Goods:封装数据库数 ...

  2. python测试开发django-13.操作数据库(增删改查)

    前言 django的models模块里面可以新增一张表和字段,通常页面上的数据操作都来源于数据库的增删改查,django如何对msyql数据库增删改查操作呢? 本篇详细讲解django操作mysql数 ...

  3. 9.5Django操作数据库的增删改查

    2018-9-5 18:10:52 先贴上笔记 day61 2018-04-28 1. 内容回顾 1. HTTP协议消息的格式: 1. 请求(request) 请求方法 路径 HTTP/1.1\r\n ...

  4. Java操作数据库实现"增删改查"

    本文主要讲解JDBC操作数据库    主要实现对MySql数据库的"增删改查" 综合概述: JDBC的常用类和接口 一   DriverManager类 DriverManage类 ...

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

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

  6. C#通过窗体应用程序操作数据库(增删改查)

    为了体现面向对象的思想,我们把“增删改查”这些函数封装到一个数据库操作类里: 为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据: 我 ...

  7. Java数据库连接——JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  8. Java数据库连接--JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  9. java中如何操作数据库(增删改查)

    EntityManager 是用来对实体Bean 进行操作的辅助类.他可以用来产生/删除持久化的实体Bean,通过主键查找实体bean,也可以通过EJB3 QL 语言查找满足条件的实体Bean.实体B ...

随机推荐

  1. Sping--life cycle

    bean.xml: 注意, 千万不要后面加上 scope="prototype" <?xml version="1.0" encoding="U ...

  2. window.location.href 和 document.location.href

    document表示的是一个文档对象,window表示的是一个窗口对象,一个窗口下可以有多个文档对象. 所以一个窗口下只有一个window.location.href,但是可能有多个document. ...

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

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

  4. 74HC166与TPIC6A595分析(转)

    源:Atmega162串行外设接口SPI 一.Atmega162的SPI接口基本概念与工作原理 SPI接口的全称是"Serial Peripheral Interface",意为串 ...

  5. IOS开发-UI学习-NSMutableAttributedString(带属性的字符串)的使用

    带属性的字符串: NSString *aa = @"hellochinaIloveYou!"; NSMutableAttributedString *mas = [[NSMutab ...

  6. bzoj2628: JZPSTR

    Description 问题描述 你要对一个字符串进行三种操作: 0. 在位置x_i处插入一个字符串y_i 1. 删除位置[x_i, y_i)的字符串 2. 查询位置[x_i, y_i)的字符串包含多 ...

  7. ios数据存储——数据库:SQlite3以及第三方库FMDB

    [reference]http://blog.csdn.net/mad1989/article/details/9322307 原生数据库:SQlite3 一.必备条件 在ios项目中使用sqlite ...

  8. android dialog圆角显示及解决出现的黑色棱角.(友情提示)

    http://blog.csdn.net/jj120522/article/details/7871289 最近在开发一个天气预报的app,看到一个比较不错友情提示,如下:               ...

  9. github 创建新项目

    二.GitHub简介 GitHub 可以托管各种Git版本库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进 ...

  10. IOS web app一些实用的属性设置

    IOS对safari私有的属性很多,虽然很多不为人知但是却很实用.掌握好这些属性对web app和混合app的开发会很有帮助. 1.format-detection[telephone=no] 是否自 ...