打开SqlConnection之前处理不同的ConnectionStates
时间:2020-03-06 14:26:51 来源:igfitidea点击:
如果需要在发出查询之前打开SqlConnection,是否可以简单地以相同方式处理所有非Open ConnectionState?例如:
if (connection.State != ConnectionState.Open) { connection.Open(); }
我在某处读到了ConnectionState.Broken,需要在重新打开连接之前将其关闭。有人对此有经验吗?谢谢-
解决方案
这不是直接回答问题,而是最佳实践是为每次访问数据库打开和关闭连接。 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
这样,我们无需在打开连接时检查连接状态。
http://msdn.microsoft.com/zh-CN/library/system.data.connectionstate.aspx
断开的连接状态确实需要关闭并重新打开,然后才能继续使用。
编辑:不幸的是,关闭一个关闭的连接也会使我们失望。在对未知连接进行操作之前,我们需要测试ConnectionState。简短的switch语句也许可以解决问题。