使用事务执行多个查询 [英] Using transaction to execute multiple queries
本文介绍了使用事务执行多个查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使用事务来运行下面的代码,如果任何查询没有成功执行,我希望数据可以回行。
请保存我的一天。
使用 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屋!
查看全文