VS2005下 DataReader 转为 DataTable 错误

 

“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------
值类型与列类型不匹配 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.ArgumentException: 值类型与列类型不匹配
源错误: 
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

 

DataReader 转为 DataTable 代码:

public DataTable DataReaderToDataTable(SqlDataReader dataReader)
{
DataTable datatable = new DataTable();
DataTable schemaTable = dataReader.GetSchemaTable();
try
{
foreach(DataRow myRow in schemaTable.Rows)
{
DataColumn myDataColumn = new DataColumn();
myDataColumn.DataType = myRow[0].GetType();
myDataColumn.ColumnName = myRow[0].ToString();
datatable.Columns.Add(myDataColumn);
}
while(dataReader.Read())
{
DataRow myDataRow = datatable.NewRow();
for(int i=0;i{
myDataRow[i] = dataReader[i];
}
datatable.Rows.Add(myDataRow);
myDataRow = null;
}
schemaTable = null;
dataReader.Close();
return datatable;
}
catch(Exception ex)
{
throw new Exception("error",ex);
}
}

解决方法:

 用load方法

  datatable .Load (dataReader)

 这里也有详细的解答:

http://community.csdn.net/Expert/topic/5535/5535462.xml?temp=.8925287

http://www.itpub.net/797409.html

你可能感兴趣的:(Datatable)