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
大家好! 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