猿问

SQL连接超时问题

我有包含该类以连接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”以外的所有其他情况的连接?如果这样做,那么此代码会产生影响吗?


holdtom
浏览 220回答 2
2回答

喵喔喔

调整 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方法。让我知道它是否有效。
随时随地看视频慕课网APP
我要回答