2012-06-20 3 views
0

ODBC 연결을 통해 데이터를 검색하고 데이터 테이블에 넣으려고합니다. 들어오는 데이터의 셀 값이 null 일 수 있습니다.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); 

나는 내가 데이터 테이블의 열을 만드는 오전 읽고있다 첫 번째 행에 : 여기

내가 데이터 테이블에서 데이터를 가져올 사용하고있는 코드입니다. 그런 다음 각 행의 셀 값을 계속 읽습니다. 여기에 catch가 있습니다 : 하나의 열을 반환하는 select 쿼리를 수행하면 위의 작업이 수행됩니다. 그러나 여러 열에서 수행하면 예외가 발생합니다. Arithmetic operation resulted in an overflow 줄에 : if (firstRun) dt.Columns.Add(reader.GetString(i), reader[i].GetType());

정확하게 여기에 무엇이 누락 되었습니까?

감사

답변

1

reader.GetString(i) 분명히 지정된 열 값, 컬럼의 NOT 이름을 반환합니다. 그래서 열의 이름을 얻으려면 reader.GetName(i)으로 바꿨습니다.

관련 문제