开发者社区> 技术小甜> 正文

数据库绑定中,DataAdapter的UpDate()方法的一点注意

简介:
+关注继续查看
在用DataAdapter获得数据,填充到DataTable中后,再把DataGridView绑定到DataTable中后,我们可以在DataGridView进行增删改,然后可以调用DataAdapter的UpData(DataTable),来提交DataGridView中的更改。这个过程表面看来很自然,然后背后都有些什么东西呢?我们来看一下。
   首先,DataGridView绑定到DataTable后,DataTable中的数据就和DataGridView中显示的数据成为一体,即DataGridView中变化,DataTable中也发生变化,随后调用UpData(DataTable),来完成了对DataTable中的更改数据向数据库提交,当然,如果DataAdapter的DeleteCommand,UpateCommand,InsertCommand没有语句的话,当然需要SqlCommandBuilder来自动生成语句来完成相应的对数据库的提交了。这些都很正常,其实换个控件来绑定一下,真正的问题就会显露出来,就是把一个简单控件绑定到DataTable上时的问题。

   接下来我们通过  textBox1.DataBindings.Add("Text", DT,"学生编号"),这时如果更改textBox1的Text值,调用DataAdapter的UpData(DataTable),会发现数据库中的数据不发生改变,为什么呢?其实,DataAdapter的UpData(DataTable)方法在提交时会找DataTabel中有所改变的数据进行提交,当textBox1的数据库更改后,虽然DataTable中的数据也修改了,但DataTable中的所谓的标志没有改变,也就是当调用DataAdapter的UpData(DataTable)的方法时,不以为DataTable中有更改的数据,所以提交后,数据库中的数据不改变。这时,我们就想,DataTable中的数据明明改了呀,为什么那个所谓的标志没改呢?这里就是想,DataTable中的数据修改后,什么时间所谓本行更改标志才会变呢?经测试发现,只要把编辑的焦点移离本行数据就会触发修改本行的更改标志,这个标志可以通过调用本行的RowState来查看,查看本行是什么状态,没有修改的行是Unchanged这个关态,当然还有一些修改的状态,当然是与增删改有关的。现在的问题是,我们通过什么方法来修改这个状态呢,行的RowState是只读的,没法改变,现在办法就是当点击提交时,先移动行的焦点,再调用DataAdapter的UpData(DataTable)方法,可以通过 textBox1.BindingContext[DT].Position++来移动编辑焦点,这样就达到了更改本行状态的目的了,现在提交,数据库就可以修改了。























本文转自桂素伟51CTO博客,原文链接:   http://blog.51cto.com/axzxs/150001,如需转载请自行联系原作者





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C#中将DataGrid绑定到SQL Server数据库,显示数据库中的数据
C#中将DataGrid绑定到SQL Server数据库,显示数据库中的数据
36 0
hibernate查询出的实体,set值后,自动更新到数据库
hibernate查询出的实体,set值后,自动更新到数据库
85 0
数据库实验基本表的创建、修改与删除(SQL语句
基本表的创建、修改与删除(SQL语句 实验要求 实验要求 实验名称:基本表的创建、修改与删除(SQL语句) 实验内容:使用 SQL 语句创建、修改及删除基本表
154 0
Oralce 数据库 - 查询数据库所有的表和视图实例演示,查询指定用户下所有表和视图方法
Oralce 数据库 - 查询数据库所有的表和视图实例演示,查询指定用户下所有表和视图方法
117 0
游标遍历所有数据库循环执行修改数据库的sql命令
原文:游标遍历所有数据库循环执行修改数据库的sql命令 MSSQL数据库服务器上有很多类似的数据库,需要将这些数据库统一修改其中的某些表或者某些命令,那么就会想到用游标来遍历。 先来说思路: 1,首先需要查询出所有的数据库;   select [name] from [master].
3017 0
SqlServer判断数据库、表、字段、存储过程、函数是否存在
原文:SqlServer判断数据库、表、字段、存储过程、函数是否存在 判断数据库是否存在 if exists (select * from sys.
998 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
数据库2025 V3
立即下载
SQL Sever迁移PG经验
立即下载
低代码开发师(初级)实战教程
立即下载