检查是否存在与数据库asp.net/c#的打开连接

时间:2010-01-07 19:40:08

标签: c# asp.net database linq

每当我的应用程序运行存储过程时,它都会执行以下操作:

using (DbBase conn = new DbBase())
{      
    //call sproc
}

DBBase()打开与LINQ DataContext的连接。

我想知道的是,如果有一种方法可以知道连接是否已经打开,并使用它而不是打开一个新连接。该验证应该在DbBase()构造函数内部完成,如下所示:

ClientDB = new ClientDBDataContext([ConnectionString from web.config]);

谢谢

5 个答案:

答案 0 :(得分:5)

您查看任何DBConnection对象的State属性,它会告诉您它是open, closed, connecting, executing, fetching or broken

通过使用using{ }语句,可以保证在对象超出范围时关闭连接。

答案 1 :(得分:2)

使用using的好处是,这是您不必担心的事情类型。

答案 2 :(得分:1)

我不担心它(除非你对它有所描述)。使用连接池,打开新连接可能非常便宜。如果出现问题,您可能需要查看更改池中的连接数(http://www.15seconds.com/issue/040830.htm

答案 3 :(得分:1)

我不知道DBase,但是Sql Server提供程序至少已经为你做了这个。它在后台使用连接池来尽可能重用现有连接。

答案 4 :(得分:1)

在连接池到位的情况下(默认情况下 - 你已经明确地做了一些事情来关闭它)这不是问题。让连接池代码处理这个。然后关闭连接,实际上只将其释放回池中以便重用。只有在池中没有,才会为您创建(并打开)新的。你使用using声明好。这确保了连接将被释放回池中以便重复使用(未关闭),就像使用它完成此代码片段一样。