【发布时间】:2011-07-20 15:01:00
【问题描述】:
我正在尝试将 SQL 查询的结果读取到 List(Of) 中,并且在将项目添加到 List 增量时可以看到 List.count,但是当我尝试读取列出 List.Count 返回 0。
我的清单如下:
Public Class roomList
Public Sub New()
End Sub
Public Property eName() As String
Get
Return _eName
End Get
Set(ByVal value As String)
_eName = value
End Set
End Property
Public Property eID() As Integer
Get
Return _eID
End Get
Set(ByVal value As Integer)
_eID = value
End Set
End Property
Public Property eEmail() As String
Get
Return _eEmail
End Get
Set(ByVal value As String)
_eEmail = value
End Set
End Property
Private _eID As Integer
Private _eName As String
Private _eEmail As String
End Class
我正在将 SQL 结果读取到列表中,如下所示: 编辑:这段代码的 sn-p 在它自己的 Sub() 中。
Dim rooms As New List(Of roomList)
While dr.Read
rooms.Add(New roomList() With {.eID = dr.Item("mId"), .eName = dr.Item("roomName"), .eEmail = dr.Item("roomEmail")})
MsgBox(rooms.Count)
End While
然后我尝试读取列表的计数,如下所示: 编辑:这段代码的 sn-p 在它自己的 Sub() 中。
Dim rooms As New List(Of roomList)()
MsgBox(rooms.Count)
谁能帮我理解为什么 List 返回计数为 0,并帮助我修复代码以便正确调用列表?
感谢任何人能够提供的任何帮助,如果您需要任何进一步的信息,请随时与我联系。
马特
编辑:我试图读/写 List 的两个 sn-ps 代码都在它们自己的 Sub 中,我应该改为声明一个全局变量吗?
第一个Sub如下:
Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
Try
getRoomList()
Dim rooms As New List(Of roomList)()
Dim r As roomList
MsgBox(rooms.Count)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
调用 getRoomList() 子:
Private Sub getRoomList()
Dim rooms As New List(Of roomList)
Try
' SQL Query stuff goes here
dr = sqlCmd.ExecuteReader
While dr.Read
rooms.Add(New roomList() With {.eID = dr.Item("mId"), .eName = dr.Item("roomName"), .eEmail = dr.Item("roomEmail")})
'MsgBox(rooms.Count)
End While
End If
Catch ex As Exception
End Try
End Sub
【问题讨论】:
-
在 while 循环期间是否收到消息框?
-
您要两次申报房间吗?您的示例代码当然有两个声明。
-
根据您的编辑,房间变量的范围有误。听起来它具有方法级别(子函数)范围而不是类。如果房间需要在 Subs 之间共享,那么它的范围应该在更高的级别。
-
@Lima,根据您在下面的帖子中的编辑查看我的编辑。
-
@Lima - 当你真正需要
function时,你正在使用sub。您需要在getRoomList内创建rooms对象并将其返回给您的调用方法。没有它,房间就毫无意义。
标签: vb.net .net-3.5 generic-list