daSrc是一个数据动态适配器
daSrc.update(ds);
如果里面某一条语句出错,将导致整个事务出错,请问有什么好的方法捕捉到里面的异常,然后让事务持续进行????紧急求救,在线等待........waiting.............

解决方案 »

  1.   

    你是在DataAdapter中的UpdateCommand中写了多条sql语句?
    因该不好捕捉其中的某一句的Exception吧,建议把语句分开执行吧,
      

  2.   

    用DataAdapter更新数据的确会出现各种问题还导致整个更新任务异常终止。
    更要命的是有的行其实已写入数据库,但异常终止后这些已更新行的RowState并没有被初始化,再次更新就会出现“数据库中已存在...行”的错误。
    我用的方法是:
    try
    {
     update.....
    }
    catch(System.Data.DBConcurrencyException dbError)
    {
      //用一个窗体遍历出有错误的数据行,并允许用户在此窗体中修复错误重试更新
    }
    catch(Exception ex)
    {
      //用DataReader比较现有数据,已写入的行就设置它的RowState = RowState = DataRowState.Unchanged
      //重试更新
    }
      

  3.   

    细看楼主发言,是要跳过错误继续进行了??那么,这要就可以了try
    {
       da.Update();
       ...
    }
    catch
    {
    //do nothing
    }
      

  4.   

    不明白你是说,你的程序会出错,还是你把多条sql语句在数据库执行时出错
    对于前者,使用普通的try catch 块就可以捕捉,
    对于后者,为什么不使用存储过程呢?存储过程是可以捕捉sql语句异常的,尽管不准确,但确实是可以捕捉
      

  5.   

    我是利用DataAdapter.update(ds )批处理进行更新表数据的。一旦一条数据更新失败,所有update记录将失败,我现在就是想即使它出现错误,还是得让update语句继续执行。
      

  6.   

    可以设置DataAdapter在更新异常时的动作,使用DataAdapter的RowUpdate事件,详见帮助:
    .net framework\使用.net framework编程\通过ADO.net访问数据\使用 .NET Framework 数据提供程序访问数据\使用 DataAdapter 事件
      

  7.   

    恩,正在处理中..............
    估计问题应该不大了,
    http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemdatacommondataadapterclasscontinueupdateonerrortopic.asp