日期:2014-05-18  浏览次数:20904 次

DataAdapter的Update( DS , "表名" )会自动将数据表的行状态更新为Unchanged状态,怎么才能去掉这个功能。我想手动更新行状态。
我举例说一下必要性:
我一次更新两个DataTable,问题出来了。
private   int   UpdateDT()
{
    try
        {
            DataAdapter.Update(   DT1   )   //第1步
            DataAdapter.Update(   DT2   )   //第2步
            //当然,有事务提交语句,为了方便没有写出
            return   0;//成功。
        }
    catch
      {
            //当然,有事务回滚语句,为了方便没有写出
            return   -1;//失败
      }
}
第1步成功了,第2步失败了。此时DT1的行状态都成Unchanged,DT2的行状态没有变。

如果再次调用UpdateDT(),就会产生错误,第1步没有任何操作,而第2步执行成功了。
那么整个操作就数据没有同步。

------解决方案--------------------
试试
SqlDataAdapter da = new SqlDataAdapter(sSql,dbConn);
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.InsertCommand = cb.GetInsertCommand();
da.UpdateCommand = cb.GetUpdateCommand();
da.DeleteCommand = cb.GetDeleteCommand();