VB.NET - 多个 SQLDataReader

标签 vb.net

我在 ASP.NET 中进行了大量开发,并且我知道您只能为每个 SQLConnection 打开一个 SQLDataReader。然而,在 VB.NET(表单应用程序)中似乎并非如此,即我为一个连接对象打开了多个 SQLDataReader。这在 VB.NET 中允许吗?

如果没有明显的答案,那么我将发布一些代码。

这是一些代码:

Public Function CheckActiveReviews()
            Dim objCon As SqlConnection
            Dim objCommand As SqlCommand, objCommand2 As SqlCommand
            Dim objDR As SqlDataReader, objDR2 As SqlDataReader
            Try
                objCon = New SqlConnection("Data Source=TestDatabase;Initial Catalog=TestTable;User ID=TestUser;Password=TestPassword;MultipleActiveResultSets=True")
                objCommand = New SqlCommand
                objCommand.Connection = objCon
                objCommand2 = New SqlCommand
                objCommand2.Connection = objCon
                objCon.Open()
                objCommand.CommandText = "SELECT ID FROM Person WHERE PersonID > 1000"
                objDR = objCommand.ExecuteReader()
                Do While objDR.Read
                    objCommand2.CommandText = "SELECT * FROM Sport WHERE PersonID = @PersonID "
                    objCommand2.Parameters.AddWithValue("@PersonID", objDR("ID"))
                    objDR2 = objCommand2.ExecuteReader
                Loop

            Catch ex As Exception

            End Try

        End Function

最佳答案

如果您使用MARS - Multiple Active Result Sets,您可以使用多个数据读取器- 但我不建议这样做,除非你真的需要它。

相反,我建议每次需要时创建一个新的 SqlConnection 对象 - 尽可能短地使用它,然后丢弃它(使用 Using 语句来为您执行此操作)。连接池将在可能的情况下考虑重用“物理”网络连接的效率。这样您就不必担心 SqlConnection 是否已打开等 - 您每次都始终遵循相同的“创建、打开、使用、处置”模式。

关于VB.NET - 多个 SQLDataReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11332670/

相关文章:

.net - ConfigurationManager 不会将设置保存到 exe.config

c# - 图标存在于系统托盘中?

vb.net - VB.Net 是否具有与 #pragma 警告禁用/恢复等效的功能?

vb.net - 将文件转换为base64函数输出

c# - 带参数的属性

c# - 使用 SharpDX : How to Draw over the screen surface? 的 HUD 基础知识

sql-server - 将多个sql数据表加载到单个数据表中,所有表共享一列

.net - VB.NET严格关闭选项

asp.net - 在 HTML 表中显示 SqlDataSource 数据(DataTables 插件)

vb.net - 如何检查当前系统日期格式?