民间
我有一个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
这个错误是否也意味着执行某些查询需要太长时间?我的数据库中的一些表中包含大量数据。
这些人会非常感谢任何反馈或帮助,因为它确实会影响我的应用程序。
感谢。