private DataRow getDataRowFromReader(IDataReader reader)
{
DataRow row = new DataRow();
DataTable tbl = new DataTable();
for (int i = 0; i < reader.FieldCount; i++)
{
Type type = reader[i].GetType();
if(type.Equals(Type.GetType("DBNull")) || type.Equals(Type.GetType("System.DBNull")))
type = typeof(string);
DataColumn col = new DataColumn(reader.GetName(i), type);
tbl.Columns.Add(col);
}
row = tbl.NewRow();
for (int i = 0; i < reader.FieldCount; i++)
{
Type readerType = reader[i].GetType();
Type rowType = row[i].GetType();
if (readerType.Equals(rowType))
row[i] = reader.GetValue(i);
else
row[i] = reader.GetString(i);
}
return row;
}
1 루프에서 DBNull을 처리하려고하는데 두 번째에는 DBNull 유형의 NewRow()에 의해 작성된 모든 행이 있습니다.DataRow 유형은 DBNull입니다.
rowType ~ DBNull
왜 이런 일이 발생합니까?
달성하려는 목표는 무엇입니까? – abatishchev
DataReader를 사용하는 [DataTable의 Load 메서드] (http://msdn.microsoft.com/en-us/library/7x8ccbsb.aspx)를 인수로 사용하지 않는 이유는 무엇입니까? 'DataTable dt = 새로운 DataTable(); dt.Load (reader); ' –