0

クラスを使用してExcelからレコードを読み取ろうとするとOLEDbDataReader、各行の列データを希望する順序で読み取ることができません。インデックスが範囲外の例外をスローします。

私が持っている列は、FirstName、LastName、Salaryです。

OleDbDataReader oledbReader = oledbCmd.ExecuteReader();

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

FirstName、LastName、Salaryの順に読み込もうとするとうまくいきますが、好きな順番で読みたいです。それは可能ですか?

4

3 に答える 3

0

私は常に整数列インデックスを使用してExcelから読み取り、各列のインデックスを定義する列挙型を持っています。たとえば...

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

于 2012-08-20T15:30:25.000 に答える
0

次のようにselectクエリを作成する必要があります:テーブルからcol1、col2、col3を選択します

特定の条件では、これを表からselect*を使用しないでください。

于 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 に答える