0

ODBC接続を介してデータを取得し、データテーブルに配置しようとしています。入ってくるデータは、いくつかのセル値がnullである可能性があります。

データテーブルにデータをインポートするために使用しているコードは次のとおりです。

DataTable dt = new DataTable();
OdbcCommand cmd = _conn.CreateCommand();
cmd.CommandText = sql;
OdbcDataReader reader = cmd.ExecuteReader();
bool firstRun = true;

while (reader.Read())
{
    object[] row = new object[reader.FieldCount];

    for (int i = 0; i < reader.FieldCount; i++)
    {
        if (firstRun)
            dt.Columns.Add(reader.GetString(i), reader[i].GetType());

        if (!reader.IsDBNull(i))
            row[i] = reader.GetValue(i);
    }
    firstRun = false;

    dt.Rows.Add(row);

私が読んでいる最初の行で、データテーブルに列を作成しています。次に、各行のセル値を読み続けます。キャッチは次のとおりです。単一の列を返すselectクエリを実行すると、上記の操作が機能します。ただし、複数の列で実行すると、例外がスローArithmetic operation resulted in an overflowされます。if (firstRun) dt.Columns.Add(reader.GetString(i), reader[i].GetType());

私はここで何が欠けていますか?

ありがとう

4

1 に答える 1

1

reader.GetString(i)明らかに、列の名前ではなく、指定された列の値を返します。reader.GetName(i)そのため、列の名前を取得するためにa に置き換えました。

于 2012-06-21T14:48:03.527 に答える