数据库绑定中,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,如需转载请自行联系原作者





相关文章
|
29天前
|
存储 监控 安全
数据库多实例的部署与配置方法
【10月更文挑战第23天】数据库多实例的部署和配置需要综合考虑多个因素,包括硬件资源、软件设置、性能优化、安全保障等。通过合理的部署和配置,可以充分发挥多实例的优势,提高数据库系统的运行效率和可靠性。在实际操作中,要不断总结经验,根据实际情况进行调整和优化,以适应不断变化的业务需求。
|
28天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
38 7
|
2月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
75 11
|
2月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
3月前
|
消息中间件 关系型数据库 数据库
Python实时监测数据库表数据变化的方法
在实现时,需要考虑到应用的实时性需求、数据库性能影响以及网络延迟等因素,选择最适合的方法。每种方法都有其适用场景和限制,理解这些方法的原理和应用,将帮助开发者在实际项目中做出最合适的技术选择。
145 17
|
3月前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
35 4
|
3月前
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
|
3月前
|
SQL 关系型数据库 数据库连接
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
|
2月前
|
SQL 存储 监控
串口调试助手连接SQL数据库的技巧与方法
串口调试助手是电子工程师和软件开发人员常用的工具,它能够帮助用户进行串口通信的调试和数据分析
|
2月前
|
Java API 数据库
Data jpa 增删改查的方法分别有哪些
Data jpa 增删改查的方法分别有哪些