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. CodeForces 626C Block Towers

    构造AC的.左右两边都先不用6的倍数,然后哪边数字大那一边往回退一下,然后再比较哪边数字大.......直到结束 #include<cstdio> #include<cstring& ...

  2. STM8S STM8L引脚如何配置最低(转)

    源:STM8S STM8L引脚如何配置功耗最低 STM8S无任何外围电路 单片机CAP接104电容 复位接上拉电阻,其它引脚全部悬空,利用以下程序测试电流如下:(以前也用STM8L做过类似实验,情况也 ...

  3. ASIHTTPRequest异步请求

    我们运行程序,如果网速很慢,查询的时候会一直黑屏,直到请求结束画面才出现,这样用户体验很不好.因此同步请求一般只是在某个子线 程中使用,而不在主线程中使用.异步请求的用户体验要比同步请求好,因此一般情 ...

  4. SPOJ839 OPTM - Optimal Marks

    传送门 闵神讲网络流应用的例题,来水一水 要写出这道题,需要深入理解两个概念,异或和最小割. 异或具有相对独立性,所以我们把每一位拆开来看,即做大概$32$次最小割.然后累加即可. 然后是最小割把一张 ...

  5. 路由器、交换机学习之IP地址、使用网络掩码划分子网

    局域网子网划分 对于C类IP地址来说(192.168.1.X,其中前面的192.168.1为网络号,后面的X为主机号,这样的网络中可以有254台主机,其中.0为局域网地址,.255为广播地址)进行子网 ...

  6. sqlserver修改增删改字段

    ---新增列 alter table article add addtime0 datetime ---修改列 alter table article ) --删除列 alter table arti ...

  7. RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)

    上篇文章中,我们把每个Message都是deliver到某个Consumer.在这篇文章中,我们将会将同一个Message deliver到多个Consumer中.这个模式也被成为 "pub ...

  8. limesurvey设置短调查问卷url

    If you want to use fancy URLs and so not have /index.php in every URL please edit /application/confi ...

  9. 五 Android Capabilities讲解

    1.Capabilities介绍 可以看下之前代码里面设置的capabilities DesiredCapabilities capabilities = new DesiredCapabilitie ...

  10. iOS 之 界面编程解析

    参考:http://www.cocoachina.com/design/20151225/14789.html 0. 内容概述 基础与本质:说明普遍意义上的UI系统的三大模块,让读者从整体上对UI系统 ...