我利用SqlDataAdapter结合DataSet插入数据库时,在插入过程中有些数据出现问题,导处页面出错退出.
以下是部分代码:
SqlDataAdapter da = new SqlDataAdapter("select * from temp",ConnMs);
string strSql = "insert into temp_userinfo(" + ObjectColName + ") values(" + ObjectColNamePara + ")";
da.InsertCommand = new SqlCommand(strSql,ConnMs) ;
...
DataSet ds = DbAccess.GetDataSet("select * from " + SrcData,Server.MapPath("data.mdb"));
da.Update(ds);//出错语句现在我是想在出错时,把插入的数据能在数据库中回滚。不知能不能实现

解决方案 »

  1.   

    可以,在存储过程里或者用SqlConnection.BeginTransaction() 方法
      

  2.   

    try
    {
    SqlTransaction trans = ConnMs.BeginTransaction()
    da.InsertCommand = new SqlCommand(strSql,trans);
    ...
    da.Update(ds);
    trans.Commit();
    }
    catch
    {
    trans.Rollback();
    }
    finally
    {
    //做清理工作。
    }
      

  3.   

    SqlDataAdapter da = new SqlDataAdapter("select * from temp",ConnMs);
    sqlTranscation sca = ConnMS.BeginTranscation();
    string strSql = "insert into temp_userinfo(" + ObjectColName + ") values(" + ObjectColNamePara + ")";
    da.InsertCommand = new SqlCommand(strSql,ConnMs) ;
    ...
    DataSet ds = DbAccess.GetDataSet("select * from " + SrcData,Server.MapPath("data.mdb"));
    try{
       da.Update(ds);
       sca.Commit();
    }
    catch(Exception)
    {
       sca.RollBack();
    }
      

  4.   

    1>存储过程中用事务
    2〉dim tr as SqlTransaction=connection.BeginTransaction()
       cmd.Transaction=tr
      try   .....
      tr.Commit()
    Catch ...
    ...
    tr.RollBack()end try
    3>com级别事务
    System.EnterpriseServices
    try...
    ContextUtil.SetComplete()
    catch
    ....
    ContextUtil.SetAbort()End Try