private void Delete_Click(object sender, EventArgs e)
        {

SqlConnection conn = new SqlConnection("数据库连接串");
             conn.Open();
             SqlDataAdapter daAuthors = new SqlDataAdapter("Select * From student", conn);

DataSet dsPubs = new DataSet("Pubs");
             daAuthors.FillSchema(dsPubs, SchemaType.Source, "student"); //FillSchema加载表的架构和数据,有了架构,表就知道哪个列是它的主键,同时 Rows 集合的 Find 方法也就可用了。

daAuthors.Fill(dsPubs, "student");
             DataTable tblAuthors;
             tblAuthors = dsPubs.Tables["student"];

if (MessageBox.Show("确实要删除该行吗?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                DataRow drCurrent;              
                string Row_zhi = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();//获取第一个单元格的值            
                //MessageBox.Show(Row_zhi);           
                drCurrent = tblAuthors.Rows.Find(Row_zhi);
                drCurrent.Delete();

SqlCommandBuilder objCommandBuilder = new SqlCommandBuilder(daAuthors); //SqlCommandBuilder 提供自动生成单表命令的一种方式,这些命令用于协调使用关联的 SQL Server 数据库对 DataSet 执行的更改。              
                daAuthors.Update(dsPubs, "student"); //数据适配器.Update()方法                
                //MessageBox.Show("数据库更新成功!");

//-------重新绑定dataGridView的数据源,以便重新显示-------
                daAuthors.Fill(dsPubs, "student");
                DataTable tblAuthors1;
                tblAuthors1 = dsPubs.Tables["student"];
                dataGridView1.DataSource = tblAuthors1;
            }

conn.Close();
            conn.Dispose();
            //MessageBox.Show("数据库连接已关闭");            
        }

注:

SqlDataAdapter 不自动生成协调对 DataSet 执行的更改(使用关联的 SQL Server 实例)所需的 Transact-SQL 语句。但是,如果设置了 SqlDataAdapter 的 SelectCommand 属性,则可以创建一个 SqlCommandBuilder 对象来自动生成用于单表更新的 Transact-SQL 语句。然后,SqlCommandBuilder 将生成其他任何未设置的 Transact-SQL 语句。

一旦设置 DataAdapter 属性,SqlCommandBuilder 就将其自身注册为 RowUpdating 事件的侦听器。一次只能将一个 SqlDataAdapter 与一个 SqlCommandBuilder 对象(或相反)互相关联。

为了生成 INSERT、UPDATE 或 DELETE 语句,SqlCommandBuilder 会自动使用 SelectCommand 属性来检索所需的元数据集。如果在检索元数据后(例如在第一次更新后)更改 SelectCommand,则应调用 RefreshSchema 方法来更新元数据。

SelectCommand 还必须至少返回一个主键列或唯一的列。如果什么都没有返回,就会产生 InvalidOperation 异常,不生成命令。

SqlCommandBuilder 还使用由 SelectCommand 引用的 Connection、CommandTimeout 和 Transaction 属性。如果修改了任何这些属性或者替换了 SelectCommand 本身,用户则应调用 RefreshSchema。否则,InsertCommand、UpdateCommand 和 DeleteCommand 属性将保留它们以前的值。

如果调用 Dispose,则会解除 SqlCommandBuilder 与 SqlDataAdapter 的关联,并且不再使用所生成的命令。

转载于:https://www.cnblogs.com/Garden-blog/archive/2011/04/10/2011668.html

C#.net删除dataGridView中选中行并同时更新数据库相关推荐

  1. C# 删除DataGridView选中行

    //普通删除方式 int i = dgvAwaitX.CurrentRow.Index; DataGridViewRow row = dgvAwaitX.Rows[i]; dgvAwaitX.Rows ...

  2. java删除选中行数据库数据_删除DataGridView选中行并更新数据库

    前面写过一篇文章是DataGridView控件显示数据的,DataGridView在与数据库打交道时会经常出现,也很实用.通过DataGridView对数据库进行更改和查询都比较方便. 这里我们需要用 ...

  3. C#窗体使用按钮实现删除DataGridView选中行

    删除按钮事件: private void ButtonDelete_Click(object sender, EventArgs e){// MessageBox.Show("测试:&quo ...

  4. winform代码:关联窗体数据更新,删除dataGridview中选中的一行或多行

    一.关联窗体数据更新 关联窗体数据修改时,如果一个为总体数据显示窗体A,另一个为详细修改窗体B,从A进入B,在B中对数据进行修改,然后返回A,这时A窗体的数据需要更新. 我采用最简单的方法,首先保证每 ...

  5. ContextMenuStrip 扩展,反射添加、删除dataGridView.DataSource绑定后内容

    最近在用dataGridView.DataSource,由于dataGridView.DataSource会绑定不同类型的数据,需要一个通用的删除.添加功能 添加了弹出菜单ContextMenuStr ...

  6. DOTNET零碎要点---vb.net获取combox的选中值,删除Datagridview,选中值,处理提示框...

    1.ComboBox.SelectedValue属性值转化到相应的类型就行 注意ComboBox.SelectedValue==null时的空指针异常 3.str = ComboBox1.Select ...

  7. 移动DataGridView选中行

    移动DataGridView选中行 //向上移动 private void button4_Click(object sender, EventArgs e) {//未选中if (dataGridVi ...

  8. C#中datagridview选中行后textbox显示选中的内容

    我想让datagridview中某一行被选中时,textbox中显示选中的值,datagridview的选中模式是整行: this.dataGridView1.SelectionMode = Data ...

  9. C#DataGridView选中行赋值刷新了,但是列表没刷新

    前久我遇到了一个问题就是2个控件,一个按钮是点击了它选择下一行,另外一个是点击了它就选择下一行,但是后面写好以后点击了上下行主表的DataGridView选中行还是没有变换,但是关联它的从表的Data ...

最新文章

  1. idea怎么配置spring
  2. Apache的压力测试以及web性能优化的常用知识总结
  3. mysql 账户管理_Mysql账户管理_MySQL
  4. oracle 同一列数据不同条件分组求和_艾瑞教育:有关Oracle数据库,你需要知道的几件事...
  5. LeetCode 135 分发糖果
  6. Java 算法 字串统计
  7. iOS CoreData (一) 增删改查
  8. vue如何使用原生js写动画效果_Vue中的动画效果
  9. Windows下安装Elasticsearch
  10. C语言:ASCII码对照表
  11. 数据结构试卷及答案(二)
  12. 神经网络的双曲线正切激活函数
  13. java subject类的作用_RxJava2 系列-3:使用 Subject
  14. Apple account使用不同账号续费问题
  15. 软考中级 真题 2014年下半年 系统集成项目管理工程师 基础知识 上午试卷
  16. 【jms】Listener method could not be invoked with incoming message
  17. 93复原IP地址(递归回溯法)
  18. 平面设计面试官常问的问题有哪些?
  19. 比特彗星一直显示连接服务器,BitComet常见问题
  20. Photoshop CS6基本知识1

热门文章

  1. python拆堆和堆叠的操作_python - 如何合并不同的DFS并堆叠值? - 堆栈内存溢出
  2. mysql 排名_微服务架构下,如何利用Mysql的limit配合orderby进行排名统计
  3. 报名领奖|云栖大会,10月19-22日杭州不见不散!
  4. 面对大规模 K8s 集群,如何先于用户发现问题?
  5. echart 时间滚动_基于 ECharts 封装甘特图并实现自动滚屏
  6. 中南继续教育学院计算机绘图,求答案~~机电一体化,计算机绘图
  7. mysql galera cluster实现vip_2019年学MySQL,最佳的10本新书
  8. docker tomcat 多开 实例_给妈妈讲什么是docker
  9. python文字识别算法_Python图像处理之图片文字识别(OCR)
  10. 深蓝学院《从零开始手写VIO》作业五