读取DataReader中单个列中的每一行

时间:2017-03-01 10:58:55

标签: vb.net sqldatareader datareader oledbdatareader

我使用while(dr.Read()){...}。但是我在阅读数据方面遇到了问题。 我有一张这样的桌子:

Column1

value1
value2
value3

我想获得Value1Value2Value3

我是这样做的:

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,但在尝试检索Value2Value3时出现以下错误:

  

指定的列索引无效

1 个答案:

答案 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记录结构与水平对象结构),这可能是概念设计问题的标志