【发布时间】:2018-09-25 16:20:11
【问题描述】:
我有一个简单的辅助函数,它在 SQL Server 数据库中查找数据并返回一个数据集。
这个函数在我的 web 应用程序的很多不同的地方都用到了。
在大多数情况下,它工作得很好。但是当有很多同时连接的并发用户时,我偶尔会得到这样的错误:
DBUtilities.getDataSet:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,并且 SQL Server 已配置为允许远程连接。
发生这种情况时,我在数据库服务器事件日志中看不到任何错误,只有 Web 服务器事件日志。
在阅读了有关垃圾收集和对象处置的内容后,我开始认为可能是数据库连接没有被关闭或正确处置。
我想知道,是否有办法将此代码放入某种类型的包装器中,以帮助正确处理数据库对象?
这也是我所指的功能:
Public Overloads Function getDataSet(ByVal commandText As String, Optional ByVal tableName As String = "") As DataSet
Dim ds As New DataSet
Dim conn As New SqlConnection(myConnStr)
Try
Dim cmd As New SqlCommand(commandText, conn)
cmd.CommandTimeout = 30
cmd.CommandType = CommandType.Text
Dim da As New SqlDataAdapter
da.SelectCommand = cmd
conn.Open()
If String.IsNullOrEmpty(tableName) Then
da.Fill(ds)
Else
da.Fill(ds, tableName)
End If
Catch ex As Exception
Throw New Exception("AppDataMethods.getDataSet: " & ex.Message & ", cmdText = " & commandText)
Finally
conn.Close()
conn = Nothing
End Try
Return ds
End Function
【问题讨论】:
标签: asp.net vb.net sqldataadapter