使用事务执行多个查询 [英] Using transaction to execute multiple queries

查看:86
本文介绍了使用事务执行多个查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用事务来运行下面的代码,如果任何查询没有成功执行,我希望数据可以回行。

请保存我的一天。

 使用 con 作为  SqlConnection(ConfigurationManager.ConnectionStrings(  connection)。ConnectionString)
con.Open()
使用 copy 作为 SqlBulkCopy(con)
copy.DestinationTableName = trycsv
copy.WriteToServer(dt)
结束 使用
con.Close( )
con.Open()
Dim 查询作为 字符串 = UPDATE trycsv SET level = @level其中level = @ updlevel
使用 cmd 作为 SqlCommand(查询,con)
cmd.Parameters.AddWithValue( @ level 1
cmd.Parameters.AddWithValue( @ updlevel O
cmd.ExecuteNonQuery()
结束 使用
con.Close()
结束 使用

解决方案

我建​​议创建一个存储过程并在存储过程中



您可以轻松地将交易块,如下所示



 创建 过程 ProcName( @ level   int  @ updlevel   int 
正如
BEGIN

BEGIN TRAN
更新 trycsv SET level = < span class =code-sdkkeyword> @ level 其中级别= @ updlevel

如果 @@ Error = 0
提交 Tran
其他
回滚 Tran







END


这里是使用SqlTransaction .feel的完整解决方案免费复制.happy编码





 使用 con 作为  SqlConnection(ConfigurationManager.ConnectionStrings(  connection)。ConnectionString)
con.Open()
Dim cmd 作为 SqlCommand = con.CreateCo mmand()
使用事务 As SqlTransaction = _
con.BeginTransaction()

使用 bulkCopy 作为 SqlBulkCopy = _

SqlBulkCopy(con,_
SqlBulkCopyOptions.KeepIdentity,transaction)
bulkCopy.BatchSize = 10
bulkCopy.DestinationTableName = _
trycsv
cmd.Connection = connection
cmd.Transaction = transaction

尝试

bulkCopy.WriteToServer(读者)
cmd.CommandText = _ UPDATE trycsv SET level = @level其中level = @ updlevel
cmd.Parameters.AddWithValue( @ level 1
cmd.Parameters.AddWithValue( @ updlevel O
cmd.ExecuteNonQuery()

transaction.Commit( )

Catch ex As 例外

交易.Rollback()

最后
con.Close()
结束 尝试
结束 使用
结束 使用
结束 使用


我认为除非我误解,否则下面的链接将解决问题。



http://msdn.microsoft.com/en-us/library/ms181299.aspx [ ^ ]

How can I use transaction to run the code below, I want the data to rowback if any of the queries is not executed successfully.
please save my day.

Using con As New SqlConnection(ConfigurationManager.ConnectionStrings("connection").ConnectionString)
                    con.Open()
                    Using copy As New SqlBulkCopy(con)
                        copy.DestinationTableName = "trycsv"
                        copy.WriteToServer(dt)
                    End Using
                    con.Close()
                    con.Open()
                    Dim query As String = "UPDATE trycsv  SET level = @level  where level =@updlevel"
                    Using cmd As New SqlCommand(query, con)
                        cmd.Parameters.AddWithValue("@level", "1")
                        cmd.Parameters.AddWithValue("@updlevel", "O")
                        cmd.ExecuteNonQuery()
                    End Using
                    con.Close()
                End Using

解决方案

I would suggest to create a stored procedure and inside the stored procedure

you can easily you the transaction block, something like below

Create Procedure ProcName(@level int, @updlevel int)
As
BEGIN

BEGIN TRAN
 UPDATE trycsv  SET level = @level  where level =@updlevel

If @@Error=0
 Commit Tran
Else
 Rollback Tran




END


Hi here is your Complete solution using SqlTransaction .feel free to copy .happy coding



     Using con As New SqlConnection(ConfigurationManager.ConnectionStrings("connection").ConnectionString)
               con.Open()
               Dim cmd As SqlCommand = con.CreateCommand()
           Using transaction As SqlTransaction = _
             con.BeginTransaction()

               Using bulkCopy As SqlBulkCopy = New _

SqlBulkCopy(con, _
                    SqlBulkCopyOptions.KeepIdentity, transaction)
                   bulkCopy.BatchSize = 10
                   bulkCopy.DestinationTableName = _
                    "trycsv"
                   cmd.Connection = connection
                   cmd.Transaction = transaction

                   Try

                       bulkCopy.WriteToServer(reader)
                           cmd.CommandText = _"UPDATE trycsv  SET level = @level  where level =@updlevel"
                          cmd.Parameters.AddWithValue("@level", "1")
                         cmd.Parameters.AddWithValue("@updlevel", "O")
                         cmd.ExecuteNonQuery()

                       transaction.Commit()

                   Catch ex As Exception

                       transaction.Rollback()

                   Finally
                       con.Close()
                   End Try
               End Using
           End Using
       End Using


I think the link below will solve help unless I misunderstand.

http://msdn.microsoft.com/en-us/library/ms181299.aspx[^]


这篇关于使用事务执行多个查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆