挖掘使用ADO.NET StateChange事件技巧
ADO.NET還是比較常用的,于是我研究了一下使用ADO.NET StateChange事件,在這里拿出來和大家分享一下,ADO.NET StateChange事件在 Connection 的狀態(tài)改變時發(fā)生。 ADO.NET StateChange事件接收 StateChangeEventArgs,使您能夠使用 OriginalState 和 CurrentState 屬性來確定 Connection 狀態(tài)的改變。
◆OriginalState 屬性是一個 ConnectionState 枚舉,指示改變前的 Connection 狀態(tài)。
◆CurrentState 是一個 ConnectionState 枚舉,指示改變后的 Connection 狀態(tài)。
以下代碼示例在 Connection 的狀態(tài)改變時使用ADO.NET StateChange事件將消息寫入控制臺。
Visual Basic
- ' Assumes connection represents a SqlConnection object.
- AddHandler connection.StateChange, _
- New StateChangeEventHandler(AddressOf OnStateChange)
- Protected Shared Sub OnStateChange( _
- sender As Object, args As StateChangeEventArgs)
- Console.WriteLine( _
- "The current Connection state has changed from {0} to {1}.", _
- args.OriginalState, args.CurrentState)
- End Sub
C#
- // Assumes connection represents a SqlConnection object.
- connection.StateChange+= new StateChangeEventHandler(OnStateChange);
- protected static void OnStateChange(object sender,
- StateChangeEventArgs args)
- {
- Console.WriteLine(
- "The current Connection state has changed from {0} to {1}.",
- args.OriginalState, args.CurrentState);
- }
- }
#T#通常,只有從服務(wù)器發(fā)出的信息性消息和警告消息才會觸發(fā) InfoMessage 事件。 但是,真正的錯誤發(fā)生時,啟動服務(wù)器操作的 ExecuteNonQuery 或 ExecuteReader 方法將暫停執(zhí)行,并引發(fā)異常。如果無論服務(wù)器生成任何錯誤都要繼續(xù)處理命令中的語句的其他部分,請將 SqlConnection 的 FireInfoMessageEventOnUserErrors 屬性設(shè)置為 true。 這樣做會使連接對錯誤觸發(fā) InfoMessage 事件,而不是引發(fā)異常并中斷處理。 客戶端應(yīng)用程序可以處理此事件并對錯誤情況做出響應(yīng)。
嚴重程度等于或大于 17 的錯誤會造成服務(wù)器停止處理命令,這種錯誤必須作為異常來處理。 在這種情況下,無論如何在 InfoMessage 事件中處理該錯誤,都會引發(fā)異常。