为了账号安全,请及时绑定邮箱和手机立即绑定

SQL连接超时问题

SQL连接超时问题

C#
holdtom 2021-05-12 17:18:48
我有包含该类以连接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方法。


让我知道它是否有效。


查看完整回答
反对 回复 2021-05-23
  • 2 回答
  • 0 关注
  • 219 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信