0

我正在尝试通过 ODBC 连接检索数据并将其放入数据表中。进来的数据可能有一些单元格值为空。

这是我用来在数据表中导入数据的代码:

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);

在我正在阅读的第一行中,我正在数据表中创建列。然后我继续阅读每一行的单元格值。这是一个问题:如果我执行一个返回单列的选择查询,上面的操作就可以工作。但是,如果我在多个列上执行它,则会引发异常:Arithmetic operation resulted in an overflow就行:if (firstRun) dt.Columns.Add(reader.GetString(i), reader[i].GetType());

我到底在这里想念什么?

谢谢

4

1 回答 1

1

reader.GetString(i)显然返回指定列的值,而不是列的名称。因此,我将其替换为 areader.GetName(i)以获取列的名称。

于 2012-06-21T14:48:03.527 回答