访问 OleDbDataReader 项目时出现 IndexOutOfRange 错误
Posted
技术标签:
【中文标题】访问 OleDbDataReader 项目时出现 IndexOutOfRange 错误【英文标题】:IndexOutOfRange error when accessing OleDbDataReader items 【发布时间】:2014-01-24 12:11:46 【问题描述】:我有一些在 access 2010 中可以正常工作并返回正确值的 sql。但是,在 VB.NET 中,当我运行它时,会在 while 循环中导致上述错误。 dr.HasRows 返回 'TRUE' 但 var 'itm' 在自动窗口中不显示任何内容。有人可以解释为什么会发生这种情况以及我该如何纠正它。谢谢
Dim cmd As OleDbCommand = New OleDbCommand("SELECT Max(Requests.[Request no]) AS [MaxOfRequest no], Requests.Customer, " &
"Max([Request Boxes].[Request no]) AS [MaxOfRequest no1], [Request Boxes].Customer " &
"FROM Requests, [Request Boxes] " &
"GROUP BY Requests.Customer, [Request Boxes].Customer " &
"HAVING (((Requests.Customer)='" & cmbCustomer.Text & "') AND (([Request Boxes].Customer)='" & cmbCustomer.Text & "')) " &
"ORDER BY Requests.Customer, [Request Boxes].Customer", oledbCnn)
dr = cmd.ExecuteReader()
If dr.HasRows Then <--- this returns true
While dr.Read
itm = CStr(dr.Item("[MaxOfRequest no]")) <--- ERROR HERE
itm2 = CStr(dr.Item("[MaxOfRequest no1]"))
End While
End If
【问题讨论】:
dr.HasRows
为 true 表示存在 行。这并不意味着存在特定的字段(如[MaxOfRequest no]
) - 错误试图说明这一点。
【参考方案1】:
这里不需要方括号:
itm = CStr(dr.Item("[MaxOfRequest no]"))
方括号只是 SQL 语句中的分隔符;它们不是列名本身的一部分。试试这个:
itm = CStr(dr.Item("MaxOfRequest no"))
【讨论】:
非常感谢戈德以上是关于访问 OleDbDataReader 项目时出现 IndexOutOfRange 错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 访问带有 GitLab API 的项目时出现 GitlabParsingError
Tomcat启动成功,但是访问项目时或者是localhost:8080时出现404;