Select()使用时的注意事项
如果是从DataGridView.DataSource获取表格数据,获取的数据和最开始赋值时的数据,如果存在着不同。比如说原来第一行第一列的单元格数据是“11”,后面通过代码将值修改成了“22”,如果不加上这样行
dt.AcceptChanges();
直接用dt.Select(),是查不出这一处修改的。但是实际的dt中是存在这个修改过的值“22”.
我想了下,这可能是涉及到提交的问题。select()只会查询最终的完全提交的数据,此时的“22”属于修改但未提交。所以select()查不出来。
直接在DataGridView上操作值,是没有问题的,修改了值就是修改了。
通过代码的方式修改表格数据,每一次修改操作,会自动地提交上一次的修改。什么意思?
我要改了两个数据,第一次修改为“22”,第二次修改为“33”,如果用select()只能查出“22”,但程序里面的dt的值是“33”.
在修改为“33”的时候,自动的将“22”的修改提交了。
总结
1.在程序里以代码的方式修改DataTable后,最好加一句
dt.AcceptChanges();
避免数据不完全修改(未提交)
2.DataTable的操作相当于做了回滚预操作,所以数据要真正修改,要加上一句提交语句,就是上面的一行。而且每做一次修改操作,都会对上一次的修改但是提交的操作做一次提交。这就是为什么,我修改了20行数据,结果只有19行受影响
3.DataTable的select()虽然是对DataTable进行查询,但是本质上是对已经完成提交操作的DataTable进行查询。已修改的数据在DataTable中确实存在,但是没有被提交。相当于DataTable中存在一个旧值和新值,当提交后,旧值删去;没有提交,select只会调用旧值。
希望大家多多交流,可以加我的qq一起探讨:408187750