Public Function UpdateTable(ByVal adt As DataTable) As Boolean
        '更新DataTable到数据库中        UpdateTable = False
        OpenConn()
        Try            mcmb.DataAdapter = mda      'mcmb 是一个模块级的SqlCommandBuilder    mda 是一个模块级的 SqlDataAdapter
            mda.Update(adt)
            UpdateTable = True        Catch ex As Exception
            MsgBox("错误代码:" & Err.Number & vbCrLf & Err.Description, MsgBoxStyle.Information, "提示")        End Try    End Function
以上是我一个通用的更新一个datatable到数据库中的函数,我现在想在这个函数中加一个事务处理,也就是出错了可以回滚数据,该怎么加呢?谢谢!

解决方案 »

  1.   

    可以的.你不是用到了SqlConnection了吗?
    SqlTransaction trans =SqlConnection.BeginTransaction();--就获取到事务了.
    再在指定的command里赋值给command.Transaction = trans ;
    成功的话trans .Commit().失败的话trans.RollBack();
      

  2.   


    using (DbConnection connection =//数据库连接)
                {
                    connection.Open();
                    DbTransaction transaction = connection.BeginTransaction();
            Try
             {
                mcmb.DataAdapter = mda      'mcmb 是一个模块级的SqlCommandBuilder    mda 是一个模块级的 SqlDataAdapter
                mda.Update(adt)
                UpdateTable = True             }
                    catch
                    {
                        transaction.Rollback();
                        throw;
                    }                transaction.Commit();
                }
      

  3.   

        Public Function UpdateTable(ByVal adt As DataTable) As Boolean
            '更新DataTable到数据库中
            Dim sqlTran = sqlconn.BeginTransaction
            UpdateTable = False
            OpenConn()        Try            mcmb.DataAdapter = mda      'mcmb 是一个模块级的SqlCommandBuilder    mda 是一个模块级的 SqlDataAdapter
                mda.Update(adt)
                UpdateTable = True
                'sqlTran.commit()
            Catch ex As Exception
                sqlTran.Rollback()
                Throw
                'MsgBox("错误代码:" & Err.Number & vbCrLf & Err.Description, MsgBoxStyle.Information, "提示")        End Try
        End Function我现在写成这样的,为什么不注释掉这一行就会出错sqlTran.commit(),和事务开始后不用结束了?
      

  4.   

    adt.AcceptChanges  需要哪些条件才能成功啊?