我试图找到包含某个参考编号的每条记录,然后为每条记录将其分配给一个会话,以便将其添加到PDF中。当我运行下面的代码时,它只执行1个参考号,即使可能有3条记录需要从中获取数据。知道为什么它没有为每条记录提供它吗? TIA
cmd = New SqlCommand
cmd.Connection = Con
cmd.CommandText = "SELECT [Physician First Name], [Physician Last Name], [Recipient Primary Business Street Address Line 1], [Recipient City], [Recipient State], [Recipient Zip Code] FROM tblData WHERE ReferenceNumber = @ReferenceNumber"
cmd.Parameters.Add(New SqlParameter("@ReferenceNumber", (ReferenceTextBox.Text)))
Dim reader As SqlDataReader = cmd.ExecuteReader()
For Each NPIlookup In reader
If (reader.Read()) Then
Session("DoctorFirstName") = reader(0)
End If
Session("PDF") &= Session("DoctorFirstName")
Next
答案 0 :(得分:5)
reader.Read()
循环中的for each
会将读者提升到下一条记录,跳过您感兴趣的记录。
您不应在for each
循环期间修改集合(在本例中为读者)。
答案 1 :(得分:1)
这不是DataReader的工作原理
当您通过阅读器进行枚举时,您将枚举当前记录的字段集合,而不是所有记录。你需要调用reader.Read()来获取下一条记录,然后获得一个带有Item property的specig字段,使用例如获取特定类型的值。 GetReader,或使用For Each迭代读者的字段。
点击此处reader's documentation查看示例。
要阅读特定字段,您需要编写如下内容:
While reader.Read()
Dim firstName=reader.GetString(0)
...
End While
迭代字段
While reader.Read()
For Each value as Object in reader
...
Next
End While