首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TransactionScope混淆

TransactionScope混淆
EN

Stack Overflow用户
提问于 2013-07-29 03:01:56
回答 1查看 54关注 0票数 0

有没有可能这样做:

代码语言:javascript
复制
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

在上面的代码中,为每个循环创建事务。我之所以要这样做,是因为表被锁定,直到while循环结束。上面代码的问题是事务的创建被忽略了。

EN

回答 1

Stack Overflow用户

发布于 2013-07-29 03:28:02

第一,你不需要使用2个不同的SqlCommands变量。第二次尝试将"objDR = objCommand.ExecuteReader(ConnectionState.Closed)“更改为this "objDR = objCommand.ExecuteReader()”第三次尝试在while循环之前使用作用域

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17911756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档