异步函数与数据库事务
SQLCommand有三个和事务相关的方法,分别是:
需要特别提醒是:
1、如果要在异步函数中使用SQLCommand的事务方法,则数据源必须是SQL Server
2、开启和提交(或回滚)事务,必须在同一个线程中完成,多数时候也就是在同一个异步函数中完成。
示例
假定有两个表,分别是订单表(Orders)和订单明细表(OrderDetails),两个表通过订单编号(OrderID)建立关联。
新建一个自定义函数,用于删除指定编号的订单及对应的订单明细,函数名为DelOrder,代码为:
Dim
cmd As
new SQLCommand()
cmd.ConnectionName
= "Orders"
'指定数据源
Try
Dim id
As String =
Args(0)
'获取订单编号
cmd.BeginTransaction()
'开启事务
cmd.CommandText
= "Delete From OrderDetails Where OrderID = "
& id
cmd.ExecuteNonQuery()
'继续使用同一个SQLCommand执行其它SQL语句.
cmd.CommandText
= "Delete From Orders Where OrderID = "
& id
cmd.ExecuteNonQuery()
cmd.Commit()
'提交事务
Catch
ex As
Exception
'如果出错
cmd.Rollback()
'则回滚事务
MessageBox.Show(ex.Message,
"错误",MessageBoxButtons.OK,MessageBoxIcon.Error)
End
Try
你可以同步,也可以异步调用此函数:
Functions.AsyncExecute("DelOrder",10256)
'异步调用
Functions.Execute("DelOrder",10257)
'同步调用
有关数据库事务的更多用法,请参考: SQLCommand与数据库事务