ExecuteReader有一个可选参数,如果设置为True,那么生成的DataTable不仅可以修改,还可以保存。
新建一个文件,在命令窗口测试下面的代码,会在A的第一行的第一列写入123:
Dim cmd As new SQLCommand
Dim dt As DataTable
cmd.CommandText = "select * From {表A}"
dt = cmd.ExecuteReader(True) '记得将参数设置为True
dt.DataRows(0)("第一列") = 123
dt.Save()
DataTables("表A").Load() '重新加载表A,看看值是否已经变化
如果以上代码改变为
Dim cmd As new SQLCommand
Dim dt As DataTable
cmd.CommandText = "select * From {表A}"
dt = cmd.ExecuteReader(True) '记得将参数设置为True
Dim dr As DataRow = dt.DataRows(0)
dr("第一列") = 123
dr.Save()
提示找不到""的DataTable
是不是不能用Dim dr As DataRow = dt.DataRows(0)定义???
既然Dim dt As DataTable
按照帮助中前期的指导写基础代码,很多人容易写成Dim dr As DataRow = dt.DataRows(0)
会误导哦,希望帮助中对这部分的说明详细些。
希望不是BUG。。。。
=====================无敌分割======================================
看了下自己项目中的代码。
如果:
Dim cmd As new SQLCommand
Dim dt As DataTable
cmd.CommandText = "select * From {XX表}"
dt = cmd.ExecuteReader() 'True参数不设置,就是原来2012中的代码写法。
Dim dr As DataRow = dt.DataRows(0)
这样能直接引用dr("XX列")的值。
而2013中dt = cmd.ExecuteReader(True) '加上True参数
Dim dr As DataRow = dt.DataRows(0)
引用的dr("XX列")的值都是“空”的。。。。
[此贴子已经被作者于2013-4-24 13:55:59编辑过]