返回首页

我用CLASSE的SqlCommand的SqlConnection,SqlDataAdapter的,SqlDataReader对象,在某些情况下,我必须先关闭连接并重新打开连接之前执行一些代码。我认为,一旦我们打开一个连接,我们可以使用这方面的任何操作,我们希望在任何时间,应关闭连接的唯一时间是当用户关闭应用程序。
你能解释一下我关于这个问题,我指一些外部的帮助文章?
非常感谢你!

回答

评论会员:游客 时间:2012/02/06
RaviRanjankr:SqlConnection的连接池当你调用open()和close()你是不是真正打开和关闭物理连接到服务器。你只是添加/删除从一个可用连接池的连接。为这个原因,它是一个很好的和最佳做法,尽可能晚地打开连接和关闭连接尽早执行你的命令后,主要是程序员相信在开放较晚,接近年初。这仅仅是一个问题,如果每次打开和关闭连接的延迟会导致整个应用程序的放慢。参考链接:-imgsrc=进一步参考:-{A1}{A2}参考:-如果在SqlConnection超出范围,它不是封闭。因此,你必须明确地调用Close关闭连接
。gladiatron:一般情况下,打开和关闭连接东西我会做必要的基础。所以,想象在这样的数据层的方法:


不建议如此开放的连接尽可能晚,并尽快关闭它,保持持久连接开放,尤其是在Web应用程序因为迟早的服务器连接数将达到最大容量,并会在一个点开始拒绝连接。如此迅速地打开和关闭连接意味着连接池有一个稳定的可用性。

人还喜欢做一试......赶上()。最后{}块和finally块中的密切联系,我会做,如果有没有其他非DB相关的代码在我的try块后,我已经使用了连接。因为否则你将是不必要的和不知不觉中保持连接直到你击中finally块。只是我的意见。

欢呼:gladiatron
评论会员:游客 时间:2012/02/06
发布解决方案中的部分:如果你是调用一些代码之间的工作与数据库连接,然后是有一个异常的可能性。我记得做类似的东西,我在那里从一个函数内调用函数,都需要访问数据库,但所谓的功能后,这是做封闭,导致在调用函数中的一些异常的连接,由于连接有被关闭。我固定它通过创建另一个函数重置连接到一个有效的状态。这是几年前是没有可能是最好的实践堂妹,你应该不是真的有任何其他数据库相关的功能调用数据层内。所以,是有这种方法的优点和缺点,但9出10倍,这种做法效果很好。所以,确保连接没有被设置/重置一些其他的代码中导致异常,尝试调试你的代码,看它不能确切位置。保持连接状态上观察,并给它一个去...大多是一个已经打开的DataReader可以是罪魁祸首。希望这有助于