来自:http://zhidao.baidu.com/question/166913917.html?push=ql
DataTable.ImportRow 方法 将 DataRow 复制到 DataTable 中,保留任何属性设置以及初始值和当前值。 调用 NewRow 时,将使用现有的表架构向表中添加一行,并为该行填充默认值,同时将 DataRowState 设置为 Added。调用 ImportRow 将保留现有的 DataRowState 以及该行中的其他值。如果作为参数传递的 DataRow 处于分离状态,则忽略它,并且不引发异常。 --------------------- DataRowCollection.Add 方法 (DataRow) 将指定的 DataRow 添加到 DataRowCollection 对象中。 若要创建新的 DataRow,必须使用 DataTable 类的 NewRow 方法。当您使用 NewRow 方法时,新的 DataRow 对象通过父级 DataTable 的架构返回。当您创建了 DataRow 对象并为它的每个列设置值之后,使用 Add 方法将该对象添加到集合中。 如果用户在 RowChanging 事件中生成异常,则生成异常。如果发生异常,则不向表中添加行。
回答者: LighT_BlaCk - 八级 2010-7-14 13:17
DataRow是有状态的,Add方法意思是新添加的一行,那么通过此方法添加到DataTable时状态就是Added,刚添加进去的 而对于其他状态的行,比如修改过的行,删除的行,提交过的行等等使用Import方式的话,会保留原来的状态,而不是像Add一样是新添加进去的 Adapter就是根据Row的状态进行操作的,你最好能理解每次修改行数据的时候都会影响行的状态,这样有记录的时候才能根据情况往数据库添加或者修改 补充: 可以保存增加状态,只是Add是添加新的行,而Import是导入,这个你必须理解RowState才行,Add进去的都是新的行,比如你在食堂吃饭拿包子,那算Add进去的,新的,但是吃别人剩下的包子那是Import的,即使别人没吃看起来是新的,但是他会保留现有的包子的状态,不知道能解释明白不能