我使用while(dr.Read()){...}
。但是我在阅读数据方面遇到了问题。
我有一张这样的桌子:
Column1
value1
value2
value3
我想获得Value1
,Value2
和Value3
我是这样做的:
Using myDataReader As OracleDataReader = myCommand.ExecuteReader
While (myDataReader.Read())
Value1= myDataReader.GetValue(0).ToString().Trim()
Value2 = myDataReader.GetValue(1).ToString().Trim()
Value3 = myDataReader.GetValue(2).ToString().Trim()
End While
End Using
我可以检索Value1
,但在尝试检索Value2
和Value3
时出现以下错误:
指定的列索引无效
答案 0 :(得分:0)
您应该考虑使用OracleDataReader
来加载数据,而不是使用DataTable
。为此,请使用以下代码:
Dim dt As New DataTable
dt.Load(myCommand.ExecuteReader)
DataTable
现在将包含DataRows
的集合。您可以使用它们将值分配给变量,如下所示:
Value1 = dt.Rows(0).Item(0).ToString().Trim()
Value2 = dt.Rows(1).Item(0).ToString().Trim()
Value3 = dt.Rows(2).Item(0).ToString().Trim()
这可能会解决您的初始问题,但可能会导致进一步的问题。正如ADyson在他的评论中所建议的那样:
@EmmaW。你可以在你的循环中添加一个计数器,这样你就知道你在哪一行并且可以相应地填充属性。错误'如果您拥有少量属性,建议也是明智的。 听起来你的代码内对象模型与你的数据库并不匹配(垂直DB记录结构与水平对象结构),这可能是概念设计问题的标志