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
感觉学习资料有错误,先存疑吧