C# 从ODBC读取器读取-算术溢出异常

C# 从ODBC读取器读取-算术溢出异常,c#,odbc,arithmeticexception,C#,Odbc,Arithmeticexception,我试图通过ODBC连接检索数据并将其放入数据表中。传入的数据可能有一些单元格值为null 下面是我用来导入datatable中数据的代码: DataTable dt = new DataTable(); OdbcCommand cmd = _conn.CreateCommand(); cmd.CommandText = sql; OdbcDataReader reader = cmd.ExecuteReader(); bool firstRun = true; while (reader.Re

我试图通过ODBC连接检索数据并将其放入数据表中。传入的数据可能有一些单元格值为null

下面是我用来导入datatable中数据的代码:

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);
DataTable dt=newdatatable();
OdbcCommand cmd=_conn.CreateCommand();
cmd.CommandText=sql;
OdbcDataReader=cmd.ExecuteReader();
bool firstRun=true;
while(reader.Read())
{
object[]行=新对象[reader.FieldCount];
对于(int i=0;i
在我读取的第一行中,我在datatable中创建列。然后我继续读取每行的单元格值。这里有一个问题:如果我执行select查询返回单个列,则WWWorks上的操作。但是如果我在多个列上执行该操作,则会引发异常:
算术运算导致溢出行中的low
:if(firstRun)dt.Columns.Add(reader.GetString(i),reader[i].GetType();

我到底错过了什么

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