日期:2014-05-17  浏览次数:20825 次

请SqlDataAdapter填充DataTable
对于SqlDataAdapter从数据源将数据填充到DataTable,一直不是很明晰。

1:提供的DataTable如果有列名,用DataTable的列名还是源数据的列名?
2:如果DataTable有一些数据,那么,从数据源读到的数据是不是添加到DataTable现有数据的后面就行了?
3:DataTable中有些列在列名和架构都与源数据的对应列相同,但有个别的列违反架构信息,那么,是全部不填充,还是部分填充?
4:如果源数据的自增量是1,DataTable的自增量是2,以哪个为准?
5:如果源数据在DataTable中遇到主键值相同的行,怎么处理?
...
...
...
哎哟,太多问题了,太乱了.....《ADO.NET 2.0 技术内幕》没有讲这些啊,
哪位朋友能给点详细的资料,感激不尽......

------解决方案--------------------
没有讲,你可以自己试试啊,怎么可能什么都将给你呢
------解决方案--------------------
买本书看看,书上讲的仔细。 《ASP.NET4 高级程序设计》
------解决方案--------------------
最终解释权归DataTable所有,因为你最终绑定的是填充到DataSet中的DataTable,如果默认填充到DataSet中的DataTable不符合你的最终需求,你可以二次处理该DataTable,比如说修改列明,比如说增加一列,比如增加某些行,然后返回最终符合要求的DataTable

说白了,就像对字符串赋值一样,开始 string str="abcd"; 你想要acd,怎么办,
那么就处理字符串就可以了,比如 str=str.Replace("b","");//而最终的str也就是你想要的acd

其实很多东西,完全可以自己写程序试试,就像窗体中各种控件的属性一样,试试就能看到该属性是干嘛的,然而如果真的写出各个属性都是干嘛的,并不是几页纸那么简单的。
------解决方案--------------------
我晕,楼主是打算背书还是编程?动手啊!!!
------解决方案--------------------
动手做个试验啊!
------解决方案--------------------
别人说的不一定可靠,最好是自己动手测试一下。这些问题有点偏,属于细节,有点想不起来。
------解决方案--------------------
加个群吧,这基础的东西。。。。。。。。。。。。。。。问群比这快。
------解决方案--------------------
1:提供的DataTable如果有列名,用DataTable的列名还是源数据的列名?
填充内容依据查询语句决定的,列名也是。但是如果你在获得数据以后再以addnew的方式为datatable填加数据,那这些新列是依addnew方式新增了。以查询出来的列名是不可以改变的。
2:如果DataTable有一些数据,那么,从数据源读到的数据是不是添加到DataTable现有数据的后面就行了?
填充前会重新初始化表,原有数据结构会丢失。
3:DataTable中有些列在列名和架构都与源数据的对应列相同,但有个别的列违反架构信息,那么,是全部不填充,还是部分填充?
还是老问题,你没搞清楚,填充数据前,datatable会被重新初始化
4:如果源数据的自增量是1,DataTable的自增量是2,以哪个为准?
这两列不可能是同一列,所以不影响数据
5:如果源数据在DataTable中遇到主键值相同的行,怎么处理?
填充时,查询获得的数据不可能被做为主键,所以你描述的情况不可能存在,但如果使用addnew的方式添加的数据受约束。