我有包含该类以连接sql server的Web应用程序。我已经写了如下的连接类public SqlConnection DbConnectSql(){ string str = System.Configuration.ConfigurationManager.ConnectionStrings["conStr"].ToString(); _con = new SqlConnection(str); if (_con.State == ConnectionState.Open) _con.Close(); _con.Open(); return _con;}当我在生产服务器上使用上述代码时,有时连接无法打开。重新启动IIS后,连接工作正常。我必须每两天重新启动IIS。工作的SQL连接。我们没有得到这个问题的确切例外。为了解决这个问题,我们是否需要关闭除“ _con.State == ConnectionState.Closed”以外的所有其他情况的连接?如果这样做,那么此代码会产生影响吗?
2 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
调整
if (_con.State == ConnectionState.Open)
_con.Close();
_con.Open();
在
if (_con.State == ConnectionState.Closed)
_con.Open();
试一试。
通常,在启动连接时检查连接是否打开,然后立即将其关闭并立即重新打开,这不是一个好习惯,因为可能存在延迟问题。
检查该会话是否打开了任何连接(connection == Connection.Closed),然后,如果已关闭,请打开它,否则将无济于事,因为我已经连接了。
这样,除了在逻辑上更有意义外,它也更加简洁。
另外,在您的代码中,当您使用SqlConnection时,请将它们包装在
using(_con)
{
//code here, sql stuff
};
语句,因为它将自行管理所有关闭和处理连接的内容,因此您可以确保在完成sql逻辑后,一切都可以正确处理,而不必手动调用Close和Dispose方法。
让我知道它是否有效。
- 2 回答
- 0 关注
- 219 浏览
添加回答
举报
0/150
提交
取消