VB.NET - 无法使用 SELECT 查询检索 table 上的第一个 ID

VB.NET - Unable to retrieve the first ID on a table using SELECT query

大家好! 3 年后没有使用 VB.NET 我决定再次使用不需要 Web 开发的项目。

这是我的代码(参考:link

    cmdOLEDB.CommandText = "SELECT Price FROM tblPrice"

    cmdOLEDB.Connection = cnnOLEDB

    Dim rdrOLEDB As OleDbDataReader = cmdOLEDB.ExecuteReader
    Dim priceList(18) As String
    Dim i As Integer = 0

    If rdrOLEDB.Read = True Then
        While rdrOLEDB.Read()
            priceList(i) = rdrOLEDB.GetValue(0)
            i += 1
        End While

        txtPrice1.Text = priceList(0).ToString

        cnnOLEDB.Close()
    Else
        MsgBox("Record not found.")
        cnnOLEDB.Close()
    End If

当我将此代码放入 MsgBox 时

MsgBox(rdrOLEDB.GetValue(0))

结果是“2”,但在此之前我还有 1 个数据。这意味着查询检索 ID # 2 而不是 ID # 1。这是我的 Access 数据库的屏幕截图

当我使用此代码时:

txtPrice1.Text = priceList(17).ToString

结果是 35。

请检查 If 条件,将 rdrOLEDB.Read 替换为 rdrOLEDB.hasrows

 If rdrOLEDB.Hasrows= True Then

再检查一遍。

您正在跳过第一条记录,因为您调用了两次 Read 方法。
第一次调用读取第一条记录并且 returns 为真,然后您进入提取信息的 while 循环,但此时您在第二条记录上。

如果你想检查是否有行然后调用 HasRows

If rdrOLEDB.HasRows Then
    While rdrOLEDB.Read()
        priceList(i) = rdrOLEDB.GetValue(0)
        i += 1
    End While

    txtPrice1.Text = priceList(0).ToString

    cnnOLEDB.Close()
Else
    MsgBox("Record not found.")
    cnnOLEDB.Close()
End If