SqlDataAdapter主要有5块内容,其中有四项是利用sqlcommand来完成的,还有一个是映射表用的。
SqlDataAdapter对象内用到的对象还是sqlconnection和sqlcommand,用这两个来实现和数据库的交互
在读取数据的时候还是用到sqldatareader来读取数据,然后Fill()到Datset中,这其中必然有映射关系,下
面来详细说说datatablemapping :
如果用 select id as ID ,name as NAME from.......
SqlDataAdapter内部还是用到datareader来读取数据,datareader要读取元数据,但是表的列名就换成
ID,NAME了,而不是id,name,然后datareader来读取数据到dataset中,首先看datareader中的tablemapping
如果映射中没有某个字段的映射,这时要看MissingMappingAction 属性了,看这个属性来怎样处理在没有映射
的字段,假设通过了映射,来到了dataset中看MissingSchemaAction来决定没有这个架构怎样处理,
来看有没有这个表,如果没有就用datareader 中的元数据来新建一个表,使用的信息都来自datareader中,当然如果有
列的映射,那么就会用到列映射的列名,而不去用datareader 中的列名。读取数据往架构里面放,是作为新增
的行还是unchanged的,这要看AcceptChangesDuringFill 了,如果为true,在填充后会自动调用acceptchange.
反之则不调用,还有个属性AcceptChangesDuringUpdate ,这个属性用于在更新长个离线中的dataset中的数据
之后要不要调用acceptchange,