为什么我的数据 reader 只返回一行?

Why is my data reader only returning one row?

我正在使用 SqlDataReaderRichTextBox 中显示数据,但我只得到一行。

这是我的代码:

  Dim strsql As String
        Dim OrdenNumero As Integer
        Dim Articulo As String
        Dim con As New SqlConnection("")

        strsql = "SELECT * FROM OrdenesParaMonitor WHERE Orden# = (SELECT MAX(Orden#) from OrdenesParaMonitor);"

        Dim cmd As New SqlCommand(strsql, con)

        Dim myreader As SqlDataReader
        con.Open()
        myreader = cmd.ExecuteReader
        If myreader.HasRows = True Then
            While myreader.Read()
                OrdenNumero = myreader("Orden#")
                Articulo = myreader("Articulo")
                Label1.Text = OrdenNumero
                RichTextBox1.Text = Articulo


            End While
        End If
     End Sub

我知道如果我想读取所有行我必须循环,但没有人使用 VB.NET 所以很难找到一个很好的例子来说明如何作为初学者做到这一点。

Why is my data reader only returning one row?

可能不是,但您要为每一行覆盖同一组变量和 UI 元素。因此,您可能只会看到 While 循环后的最后一行。

调试您的项目并在 while 循环中放置一个断点以确保安全。

no one uses VB.NET so its hard to find a good example on how to do this as a beginner.

您是否考虑过 C# 可能是一种更适合您学习的语言,因为有更多示例。 VB.NET 主要由在 VB.NET and/or VBA.

中具有丰富编程经验的人使用

正如我在评论中所说,问题在于代码如何为两个控件设置文本。设置文本而不附加到前一个文本,只是用来自记录的数据替换当前文本,只留下最后一组。

相反,您应该附加到当前文本。这可以通过对标签使用 &= 运算符或对 RichTextBox.

使用特定的 AppendText 方法来完成
While myreader.Read()
    OrdenNumero = myreader("Orden#")
    Articulo = myreader("Articulo")
    Label1.Text &= OrdenNumero   ' Append to the previous text
    RichTextBox1.AppendText(Articulo)
    ' or add a newline at each step
    RichTextBox1.AppendText(Articulo & Environment.NewLine)

End While