C#.net删除dataGridView中选中行并同时更新数据库
{
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中选中行并同时更新数据库相关推荐
- C# 删除DataGridView选中行
//普通删除方式 int i = dgvAwaitX.CurrentRow.Index; DataGridViewRow row = dgvAwaitX.Rows[i]; dgvAwaitX.Rows ...
- java删除选中行数据库数据_删除DataGridView选中行并更新数据库
前面写过一篇文章是DataGridView控件显示数据的,DataGridView在与数据库打交道时会经常出现,也很实用.通过DataGridView对数据库进行更改和查询都比较方便. 这里我们需要用 ...
- C#窗体使用按钮实现删除DataGridView选中行
删除按钮事件: private void ButtonDelete_Click(object sender, EventArgs e){// MessageBox.Show("测试:&quo ...
- winform代码:关联窗体数据更新,删除dataGridview中选中的一行或多行
一.关联窗体数据更新 关联窗体数据修改时,如果一个为总体数据显示窗体A,另一个为详细修改窗体B,从A进入B,在B中对数据进行修改,然后返回A,这时A窗体的数据需要更新. 我采用最简单的方法,首先保证每 ...
- ContextMenuStrip 扩展,反射添加、删除dataGridView.DataSource绑定后内容
最近在用dataGridView.DataSource,由于dataGridView.DataSource会绑定不同类型的数据,需要一个通用的删除.添加功能 添加了弹出菜单ContextMenuStr ...
- DOTNET零碎要点---vb.net获取combox的选中值,删除Datagridview,选中值,处理提示框...
1.ComboBox.SelectedValue属性值转化到相应的类型就行 注意ComboBox.SelectedValue==null时的空指针异常 3.str = ComboBox1.Select ...
- 移动DataGridView选中行
移动DataGridView选中行 //向上移动 private void button4_Click(object sender, EventArgs e) {//未选中if (dataGridVi ...
- C#中datagridview选中行后textbox显示选中的内容
我想让datagridview中某一行被选中时,textbox中显示选中的值,datagridview的选中模式是整行: this.dataGridView1.SelectionMode = Data ...
- C#DataGridView选中行赋值刷新了,但是列表没刷新
前久我遇到了一个问题就是2个控件,一个按钮是点击了它选择下一行,另外一个是点击了它就选择下一行,但是后面写好以后点击了上下行主表的DataGridView选中行还是没有变换,但是关联它的从表的Data ...
最新文章
- idea怎么配置spring
- Apache的压力测试以及web性能优化的常用知识总结
- mysql 账户管理_Mysql账户管理_MySQL
- oracle 同一列数据不同条件分组求和_艾瑞教育:有关Oracle数据库,你需要知道的几件事...
- LeetCode 135 分发糖果
- Java 算法 字串统计
- iOS CoreData (一) 增删改查
- vue如何使用原生js写动画效果_Vue中的动画效果
- Windows下安装Elasticsearch
- C语言:ASCII码对照表
- 数据结构试卷及答案(二)
- 神经网络的双曲线正切激活函数
- java subject类的作用_RxJava2 系列-3:使用 Subject
- Apple account使用不同账号续费问题
- 软考中级 真题 2014年下半年 系统集成项目管理工程师 基础知识 上午试卷
- 【jms】Listener method could not be invoked with incoming message
- 93复原IP地址(递归回溯法)
- 平面设计面试官常问的问题有哪些?
- 比特彗星一直显示连接服务器,BitComet常见问题
- Photoshop CS6基本知识1
热门文章
- python拆堆和堆叠的操作_python - 如何合并不同的DFS并堆叠值? - 堆栈内存溢出
- mysql 排名_微服务架构下,如何利用Mysql的limit配合orderby进行排名统计
- 报名领奖|云栖大会,10月19-22日杭州不见不散!
- 面对大规模 K8s 集群,如何先于用户发现问题?
- echart 时间滚动_基于 ECharts 封装甘特图并实现自动滚屏
- 中南继续教育学院计算机绘图,求答案~~机电一体化,计算机绘图
- mysql galera cluster实现vip_2019年学MySQL,最佳的10本新书
- docker tomcat 多开 实例_给妈妈讲什么是docker
- python文字识别算法_Python图像处理之图片文字识别(OCR)
- 深蓝学院《从零开始手写VIO》作业五