如何关闭使用WebMatrix.Data.Database.Open创建的连接?

时间:2011-09-12 10:11:43

标签: vb.net database-connection connection-pooling webmatrix

我在Windows服务中使用webmatrix的Database类。 (并在winform中调试会导致同样的错误)

我收到的错误(运行一段时间后)是:

  

超时已过期。在获得a之前经过了超时时间   从游泳池连接。这可能已经发生,因为所有汇集   正在使用连接并达到最大池大小。

这应该通过使用using语句来确保所有连接都被关闭来解决。 (as described in this good answer)但我最近开始使用WebMatrix数据库类,它似乎没有关闭我用它打开的连接。

问题是:如何关闭使用WebMatrix中的Database类创建的连接?

使用此代码:

Public Shared Function GetProperty(pid As Integer, propertyName As String) As String
    Dim db = Database.Open("SSEConnectionString")
    Dim item = db.QuerySingle("select PropertyValue from eConfiguration where PID=@0 and PropertyName=@1", pid, propertyName)
    Dim retVal = item.PropertyValue
    db.Connection.Close()
    db.Close()
    Return retVal
End Function

每次运行此代码时,我都会在 sys.sysprocesses 表中获得一个新条目(根据我的想法,这表明创建并维护了一个新连接)

我的connectionstring看起来像这样:

<add name="SSEConnectionString" connectionString="Data
     

来源= 123.45.67.890;初始目录= SSE;用户   ID = +++;密码= +++;连接超时= 5;应用程序名称= SSE_Service“               providerName =“System.Data.SqlClient”/&gt;

知道我做错了吗?

修改:Asked a second question regarding the sysprocesses table - unsure if it helps in debugging

感谢您的帮助

Edit2:Arghhhhh ....我刚刚发现导致错误的原因 - 而且它只与我自己有关。我忘了关闭连接。 : - (

Larsi

1 个答案:

答案 0 :(得分:0)

使用:

db.Connection.Close()
db.Close()