Fill 与 ReadXml 的混合使用

DataAdapter有个Fill方法,可以填充DataSet,DataSet有个ReadXml方法,可以读取XML来填充。

在CSDN上看到有人在问ReadXml与Fill的运行顺序为什么不能互换?觉得有些有趣,做了一番粗浅的观察,发现

1。
DataSet objDataSet = new DataSet();

objDataSet.ReadXml( strXmlFile );
–>生成新的表

objDataAdapter.Fill( objDataSet, “tblProducts” );
–>如果这里的东西与前面生成的表的Schema以及表名一样的话,会填充到前面一个表内,否则会另生成一个表:

2。
DataSet objDataSet = new DataSet();

objDataAdapter.Fill( objDataSet, “tblProducts” );
–>生成新的表tblProducts

objDataSet.ReadXml( strXmlFile );
–>
  a. 如果你的XML文件里有Schema,并且如果这里的东西与前面生成的表的Schema以及表名一样的话,会填充到前面一个表内,否则会生成一个新表

  b. 假如没有Schema,而且DataSet推出的Schema与前面表相同的话,并且表名一样的话,会填充到前面一个表内,如果表名不同,不会读数据进来!即,ReadXml不起作用

  c.假如没有Schema,而且DataSet推出的Schema与前面表格不同的话,不会读数据进来!即,ReadXml不起作用

还发现,好像XML文件里的根节点名与现有DataSet名是否相同是无关紧要的

建议大家别这么用,你会搞糊涂的