偶然间发现SqlDataAdapter对象包含了一个名为FillLoadOption属性,在看了一些帮助文档后感觉在理解上出现了一些非常模糊地地方。引用MSDN帮助文档的内容:
获取或设置 LoadOption,后者确定适配器如何从 DbDataReader 中填充 DataTable
并且在默认情形下,LoadOpion枚举值为OverwriteChanges。传入此行的值将同时写入每列数据的当前值和原始值版本。
    在以上的描述中我该如何去理解?假定在填充前DataTable中包含了一些数据源的数据,但是经过再次将DataTable作为参数传递给SqlDataAdapter对象的话,如果其中有部分数据与查询结果中的数据相匹配的话。这一默认选项,对于SqlDataAdapter对象起到了怎样的作用.难道DataTable对象将放弃旧值吗?

解决方案 »

  1.   

    FillLoadOption属性控制DataTable如何处理查询结果中与DataTable中现有行相匹配的部分。该属性接受来自LoadOption枚举的值,其默认值为OverwriteChanges。由其名称可以看出,这一值将导致DataTable覆盖当前存储在DataRow中的任何更改。DataTable将SqlDataAdapter提取的值输出到相应DataRow中的“当前值”和“原始值”。将FillLoadOption属性设置为PreserveChanges将保留DataRow中的当前更改,SqlDataAdapter获取的值仅被输出到相应DataRow的“原始值”。
    upsert这一术语是update和insert的复合词,大致相当于“如果该行存在,就将这一操作看作更新;如果该行不存在,就将其看作一次插入”。如果将FillLoadOption设置为Upsert,将会把SqlDataAdapter获取的值指定给已有DataRows中的“当前值”。如果在DataTable中没有相应的已存在的DataRow,则新行将被标记为挂起插入
      

  2.   

    高手怎么都是引用MSDN中的内容啊,能否给点解释?
    我在问题中提到...
      

  3.   


    其实 MSDN 已经解释的很清楚了`
      在怎么说也是MSDN的话 
      

  4.   

    请问好心人,使用DataAdapter进行填充数据后会影响DataTable对象中原有的和查询结果中相匹配的数据行吗?
      

  5.   

    ADO.NET 2.0 微软的书上有说,不过我没怎么用.
      

  6.   

    挺感谢shixuijin,薄荷,和wyq11的。
    谢谢你们了。
    但是问题依旧,没有得到解决。
    MSDN上的帮助文档我已经看过了,没看懂所以才来这里问下大家。
    但是两天来只有这么点结果,实在是可怜!
    是不是因为分数少?
      

  7.   

    我的[email protected]你发个邮件过来我把图片你发过去
      

  8.   

    你所指的是LoadOption枚举的几个值的描述性的文本吗?
      

  9.   

    对了不知道你理解了rowstate和rowversion没有当时学这个我也糊涂了很久.
      

  10.   

    不知道你所指的rowstate,rowversion指的是哪方面/
      

  11.   

    DataRowState
    DataRowVersion都有几个枚举成员,你可以去这件搜索下.
      

  12.   

    ADO.NET 2.0 高级编程这本书开始就说了,你可以去看看,那东西太拗口了,要看了才明白.
      

  13.   

    我帮你找到啦http://books.google.com.hk/books?id=pC-LQ0zLA5AC&pg=PA1&lpg=PA1&dq=ADO+2.0.NET+%E9%AB%98%E7%BA%A7%E7%BC%96%E7%A8%8B&source=bl&ots=YkH6-wk69S&sig=BwRonIjiTBu_EYydJfFvOS0ajck&hl=zh-CN&ei=R8ERTN-bI82OkQX-7bTlBw&sa=X&oi=book_result&ct=result&resnum=4&ved=0CBAQ6AEwAw#v=onepage&q&f=false如果你看不了,你在google图书中搜索ADO 2.0.NET 高级编程就在第四页
      

  14.   

    http://download.microsoft.com/download/5/d/4/5d4ad5e5-cbf0-4d5f-ba15-abac566492cd/ProgADONET2CS.msi这是书的源代码下载的地址,微软的,后面的朋友也可以下来参考.