ADO.NET还是比较常用的,于是我研究了一下使用ADO.NET StateChange事件,在这里拿出来和大家分享一下,ADO.NET StateChange事件在 Connection 的状态改变时发生。 ADO.NET StateChange事件接收 StateChangeEventArgs,使您能够使用 OriginalState 和 CurrentState 属性来确定 Connection 状态的改变。
◆OriginalState 属性是一个 ConnectionState 枚举,指示改变前的 Connection 状态。
◆CurrentState 是一个 ConnectionState 枚举,指示改变后的 Connection 状态。
以下代码示例在 Connection 的状态改变时使用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#通常,只有从服务器发出的信息性消息和警告消息才会触发 InfoMessage 事件。 但是,真正的错误发生时,启动服务器操作的 ExecuteNonQuery 或 ExecuteReader 方法将暂停执行,并引发异常。如果无论服务器生成任何错误都要继续处理命令中的语句的其他部分,请将 SqlConnection 的 FireInfoMessageEventOnUserErrors 属性设置为 true。 这样做会使连接对错误触发 InfoMessage 事件,而不是引发异常并中断处理。 客户端应用程序可以处理此事件并对错误情况做出响应。
严重程度等于或大于 17 的错误会造成服务器停止处理命令,这种错误必须作为异常来处理。 在这种情况下,无论如何在 InfoMessage 事件中处理该错误,都会引发异常。