在打开SqlConnection之前处理不同的ConnectionStates

wnk*_*nka 5 .net c# database sql-server

如果您需要在发出查询之前打开SqlConnection,您是否可以以相同的方式处理所有非Open ConnectionStates?例如:

    if (connection.State != ConnectionState.Open)
    {
        connection.Open();
    }
Run Code Online (Sandbox Code Playgroud)

我读到某个地方,对于ConnectionState.Broken,连接需要在重新打开之前关闭.有任何人对此有经验吗?谢谢-

Joe*_*Joe 5

这并没有直接回答您的问题,但最佳实践是为每次访问数据库打开和关闭连接。ADO.NET 连接池可确保其良好运行。在服务器应用程序(例如 ASP.NET)中执行此操作尤其重要,但即使在直接访问数据库的 WinForms 应用程序中我也会执行此操作。

例子:

using(SqlConnection connection = new SqlConnection(...))
{
   connection.Open();
   // ... do your stuff here

}  // Connection is disposed and closed here, even if an exception is thrown
Run Code Online (Sandbox Code Playgroud)

这样,您在打开连接时就不需要检查连接状态。


ddc*_*660 5

http://msdn.microsoft.com/en-us/library/system.data.connectionstate.aspx

在符合继续使用条件之前,需要关闭并重新打开断开的连接状态.

编辑:不幸的是,关闭一个已关闭的连接也会不好意思.在对未知连接进行操作之前,您需要测试ConnectionState.也许一个简短的开关声明可以解决问题.