戏耍Transaction,多个连接的Transaction处理(非COM+)
生活随笔
收集整理的這篇文章主要介紹了
戏耍Transaction,多个连接的Transaction处理(非COM+)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
處理事務的方法很多,其中最常用的是.NET和sql server的事務處理,^_^,COM+俺不懂,聽說用于事務處理很強,可惜了
(有機會?定要研究研究)。
下面的說明是SQL server:
通常的Tranaction的使用是基于一個sqlconnection的,使用BeginTransaction來開始和用Commit提交,rollback來回滾。我要說的多個連接的實質還是這樣,只是自己使用了一個小伎倆,利用.net的捕捉異常的機制,不再一一提交,而是統一提交和回滾。
下面是處理多個Transaction的一個類。ProcessTransaction.vb
處理多個連接時只要把相應的ConnectionString和相應的Sql語句傳入就搞定了。注意的時,ConnectionString存放在一個collection(cCN)中,Sql語句放在一個類型時string的數組中commandText(),注意把在一個Transaction的sql語句統一放在里面啊!
Code:
Imports?System.Data.SqlClient
Public?Class?ProcessTransactionClass?ProcessTransaction
????Private?c?As?New?Collection
????Public?Sub?ptExecuteNonQuery()Sub?ptExecuteNonQuery(ByVal?commandText()?As?String,?ByVal?cCN?As?Collection)
????????Dim?s?As?String
????????Dim?flag?As?Boolean
????????For?Each?s?In?cCN
????????????If?Not?ptExecuteNonQuery_test(commandText,?s)?Then
????????????????flag?=?False
????????????????Exit?For
????????????Else
????????????????flag?=?True
????????????End?If
????????Next
????????Dim?sqlTa?As?SqlTransaction
????????If?flag?Then
????????????For?Each?sqlTa?In?c
????????????????sqlTa.Commit()
????????????Next
????????Else
????????????For?Each?sqlTa?In?c
????????????????sqlTa.Rollback()
????????????Next
????????End?If
????End?Sub
????Private?Function?ptExecuteNonQuery_test()Function?ptExecuteNonQuery_test(ByVal?commandText()?As?String,?ByVal?cn?As?String)?As?Boolean
????????Dim?sqlcn?As?New?SqlConnection(cn)
????????Dim?sqlCmd?As?New?SqlCommand
????????Try
????????????sqlcn.Open()
????????????Dim?sqlTa?As?SqlTransaction?=?sqlcn.BeginTransaction()
????????????c.Add(sqlTa)
????????????sqlCmd.CommandType?=?CommandType.Text
????????????sqlCmd.Connection?=?sqlcn
????????????sqlCmd.Transaction?=?sqlTa
????????????Dim?CommStr?As?String
????????????For?Each?CommStr?In?commandText
????????????????sqlCmd.CommandText?=?CommStr
????????????????sqlCmd.ExecuteNonQuery()
????????????Next
????????????Return?True
????????Catch?ex?As?Exception
????????????Return?False
????????Finally
????????????sqlCmd.Dispose()
????????????sqlcn.Close()
????????????sqlcn.Dispose()
????????End?Try
????End?Function
End?Class
轉載于:https://www.cnblogs.com/rippleyong/archive/2004/08/18/34499.html
總結
以上是生活随笔為你收集整理的戏耍Transaction,多个连接的Transaction处理(非COM+)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (zt)说说大型高并发高负载网站的系统架
- 下一篇: 用C#委托实现哨兵和敌人的观察者模式!