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到数据库中的函数,我现在想在这个函数中加一个事务处理,也就是出错了可以回滚数据,该怎么加呢?谢谢!
'更新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到数据库中的函数,我现在想在这个函数中加一个事务处理,也就是出错了可以回滚数据,该怎么加呢?谢谢!
SqlTransaction trans =SqlConnection.BeginTransaction();--就获取到事务了.
再在指定的command里赋值给command.Transaction = trans ;
成功的话trans .Commit().失败的话trans.RollBack();
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();
}
'更新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(),和事务开始后不用结束了?