我的数据是否存在泄漏连接?

时间:2012-11-01 15:00:19

标签: asp.net sql-server enterprise-library data-access-layer

民间

我有一个N层的ASP.Net Web窗体应用程序,它使用Enterprise Library 5.0来实现数据持久性。最近我注意到我的应用程序一直在吐出以下错误

  

超时已过期。在获得a之前经过了超时时间   来自泳池的连接

这将指向泄漏的连接或连接未关闭。请有人查看我的数据访问类,如果他们发现任何连接没有正确关闭的问题,请告诉我

Public Class DataAccess

    Private db As Database = DatabaseFactory.CreateDatabase()

    Public Function ExecuteNonQuery(ByVal params() As SqlParameter, ByVal strSproc As String) As Integer

        Dim intReturnValue As Integer = 0
        Dim i As Integer

        Using cmd As DbCommand = db.GetStoredProcCommand(strSproc)

            cmd.CommandTimeout = 120

            For i = 0 To params.Length - 1
                db.AddInParameter(cmd, params(i).ParameterName.ToString, params(i).DbType, params(i).Value)
            Next

            db.AddParameter(cmd, "return_value", DbType.Int32, ParameterDirection.ReturnValue, "", DataRowVersion.Default, 0)

            db.ExecuteNonQuery(cmd)
            intReturnValue = Int32.Parse(db.GetParameterValue(cmd, "@return_value"))

        End Using

        Return intReturnValue

    End Function

    Public Function ExecuteDataReader(ByVal params() As SqlParameter, ByVal SProc As String) As SqlDataReader

        Dim i As Integer

        Dim dr As SqlDataReader

        Using cmd As DbCommand = db.GetStoredProcCommand(SProc)

            cmd.CommandTimeout = 120

            For i = 0 To params.Length - 1
                db.AddInParameter(cmd, params(i).ParameterName.ToString, params(i).DbType, params(i).Value)
            Next

            dr = TryCast(DirectCast(db.ExecuteReader(cmd), RefCountingDataReader).InnerReader, SqlDataReader)

        End Using

        Return dr

    End Function

    Public Function ExecuteDataSet(ByVal Sproc As String, ByVal params() As SqlParameter) As DataSet
        Dim db As Database = DatabaseFactory.CreateDatabase()
        Dim ds As New DataSet
        Dim i As Integer

        Using cmd As DbCommand = db.GetStoredProcCommand(Sproc)
            cmd.CommandTimeout = 120

            For i = 0 To params.Length - 1
                db.AddInParameter(cmd, params(i).ParameterName.ToString, params(i).DbType, params(i).Value)
            Next

            db.LoadDataSet(cmd, ds, "table")
        End Using


        Return ds
    End Function

这个错误是否也意味着执行某些查询需要太长时间?我的数据库中的一些表中包含大量数据。

这些人会非常感谢任何反馈或帮助,因为它确实会影响我的应用程序。

感谢。

0 个答案:

没有答案