Vb.net 交易范围混乱
是否可以这样做:Vb.net 交易范围混乱,vb.net,transactions,Vb.net,Transactions,是否可以这样做: Imports System.Data.SqlClient Imports System.Configuration Imports System.Transactions Public Class Form1 Private _ConString As String Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Transactions
Public Class Form1
Private _ConString As String
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim objDR As SqlDataReader
Dim objCommand As SqlCommand, objCommand2 As SqlCommand
Dim objCon As SqlConnection
Dim objCon2 As SqlConnection
Dim id As Integer
Try
_ConString = "Data Source=IANSCOMPUTER;Initial Catalog=AdventureWorks2008R2;Integrated Security=True;MultipleActiveResultSets=true"
objCon = New SqlConnection(_ConString)
objCommand = New SqlCommand("SELECT * FROM PERSON.PERSON WHERE BusinessEntityID<=10")
objCommand2 = New SqlCommand()
objCommand.Connection = objCon
objCommand2.Connection = objCon
objCon.Open()
objDR = objCommand.ExecuteReader(ConnectionState.Closed)
Do While objDR.Read
Using scope As New TransactionScope
objCon2 = New SqlConnection(_ConString)
objCon2.Open()
Using objCon2
objCommand2.CommandText = "UPDATE Person.Person SET middlename = @middlename WHERE " & _
" Person.BusinessEntityID = @ID "
objCommand2.Parameters.AddWithValue("@middlename", objDR("BusinessEntityID") + 1)
objCommand2.Parameters.AddWithValue("@ID", objDR("BusinessEntityID"))
objCommand2.ExecuteNonQuery()
objCommand2.Parameters.Clear()
End Using
End Using
Loop
objDR.Close() 'line 16
Catch ex As Exception
Throw
Finally
End Try
End Sub
End Class
导入System.Data.SqlClient
导入系统配置
导入系统。事务
公开课表格1
私有(解释为字符串)
私有子表单1_Load(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
Dim objDR作为SqlDataReader
Dim objCommand As SqlCommand,objCommand2 As SqlCommand
Dim objCon作为SqlConnection
Dim objCon2作为SqlConnection
作为整数的Dim id
尝试
_ConString=“数据源=IANSCOMPUTER;初始目录=AdventureWorks2008R2;集成安全性=True;MultipleActiveResultSets=True”
objCon=新的SqlConnection(_consting)
objCommand=newsqlcommand(“从PERSON.PERSON中选择*,其中BusinessEntityID1您不需要使用两个不同的SqlCommands变量。
第二次尝试将“objDR=objCommand.ExecuteReader(ConnectionState.Closed)”更改为“objDR=objCommand.ExecuteReader()
第三,尝试在while循环之前使用作用域如果我将作用域放在开始处(在while循环之外),那么它会起作用。关键是我想将作用域放在while循环中。如果您不提交事务,请使用它(就在TransactionScope的使用
结束之前)。