异步函数与数据库事务

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与数据库事务


本页地址:http://www.foxtable.com/mobilehelp/topics/0292.htm