VB 2010 (61)Transaction类和System.Transactions名称空间

 Transaction 类

https://docs.microsoft.com/zh-cn/dotnet/api/system.transactions.transaction?view=netcore-3.1

        System.Transactions 命名空间提供基于 Transaction 类的显式编程模型和使用 TransactionScope 类的隐式编程模型,在后一种模型中,事务由该基础结构自动管理。

可以利用 ADO. NET进行简单的事务处理,VB在 System.Transactions名称空间中包含的一组类专门用于事务的处理。这些类更便于在代码中定义和使用事务处理。
         System. Transactions名称空间中的类,尤其是 Transactions类,把代码从参与事务处理的资源管理器中抽象出来。ADO.NET中的事务专用于我们访问的每个数据库。创建事务没有统一的方法,也没有标准方式在多个数据库上共享数据库事务,或与其他事务支
持者共享数据库事务。 Transactions类解决了这些限制并可以与多个资源管理器协调工作System. Transactions名称空间中的类提供了创建定制资源管理器的方式。
        System. Transactions名称空间中的类很容易参与事务处理,并报告结果。
        System.Transactions名称空间支持两种使用事务的方式:隐式和显式
        在隐式事务处理中,为事务处理定义一个界限。在这个界限中使用的资源管理器都是事务处理的一部分。如果定义了一个界限,并调用一个数据库,例如SQL Server,在该数据库上执行的操作就是事务处理的一部分。如果代码执行到界限而没有出现异常,就提交事务。如果在隐式事务处理中出现了异常,就回退事务。
        在显式事务处理中,要根据需要明确提交或回滚事务处理。

Imports System.Data.SqlClient
Imports System.Transactions
Public Class Form1
    Private Function GetConnection() As SqlConnection
        Return New SqlConnection(My.Settings.pubsConnectionString)
    End Function
    Private Sub MultipleInsertImplicit()
        Dim cmdString As String = _
            "Insert Into sales(stor_id,ord_num,ord_date,qty,payterms,title_id)" & _
            "Values(@storeID,@ordNum,@ordDate,@qty,@payterms,@titleID)"
        Dim cmd As New SqlCommand(cmdString, GetConnection)
        With cmd.Parameters
            .Add("@storID", SqlDbType.Char, 4)
            .Add("@ordNum", SqlDbType.VarChar, 20)
            .Add("@ordDate", SqlDbType.DateTime)
            .Add("@qty", SqlDbType.Int)
            .Add("@payterms", SqlDbType.VarChar, 12)
            .Add("@titleID", SqlDbType.VarChar, 6)
        End With
        '开始隐性事务

        Using txn As New TransactionScope
            Try
                For i As Integer = 1 To 10
                    cmd.Parameters("@storeId").Value = PickRandomStore
                    cmd.Parameters("@ordNum").Value = PicRandomOrderNumber()
                    cmd.Parameters("@ordDate").Value = DateTime.Now
                    cmd.Parameters("@qty").Value = New Random().Next(1, 100)
                    cmd.Parameters("@payterms").Value = "NET 30"
                    cmd.Parameters("@titleID").Value = PickRandomTitle

                    cmd.ExecuteNonQuery()
                Next
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

        End Using
        '如果没有Exceptions,事务会执行到这里
    End Sub
End Class

感觉学习资料有错误,先存疑吧
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值