0

当我尝试使用OLEDbDataReader类从 excel 中读取记录时,我无法以我想要的任何顺序读取每一行的列数据。它抛出Index out of range 异常

我的列是名字,姓氏,薪水。

OleDbDataReader oledbReader = oledbCmd.ExecuteReader();

// Doesn't display anything and throws "Index out of range exception".
MessageBox.Show(oledbReader["LastName"]);

如果我尝试按名字、姓氏和薪水的顺序阅读,它可以工作,但我想按我想要的任何顺序阅读。那可能吗?

4

3 回答 3

0

您必须以这种方式编写选择查询: select col1,col2,col3 from table

在特定条件下不要使用 select * from table this。

于 2012-08-18T14:25:44.890 回答
0

你可以按任何顺序阅读,试试这个:

using (OleDbDataReader reader = oledbCmd.ExecuteReader())
{

    while (reader.Read())
    {
        a = reader.GetValue(0).ToString();
        b = reader.GetValue(3).ToString();
        c = reader.GetValue(4).ToString();

    }

}

在这个例子中我使用reader.GetValue(0).ToString();因为我不知道值的类型,但是如果你知道你可以使用 reader.GetInt32(0) 和其他的类型。

于 2014-12-02T08:34:53.307 回答
0

我总是使用整数列索引从 Excel 中读取数据,并使用枚举来定义每列的索引。所以例如...

MessageBox.Show(oleDbReader.GetValue(theColumnEnum.LastName))

于 2012-08-20T15:30:25.000 回答