源代码如下:
public static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
{
DataTable datatable = new DataTable();
&nb[FS:Page]sp; DataTable schemaTable = dataReader.GetSchemaTable();
//动态添加列
try
{
&n[FS:Page]bsp;
foreach(DataRow myRow in schemaTable.Rows)
{
&[FS:Page]nbsp; DataColumn myDataColumn = new DataColumn();
myDataColumn.DataType = myRow.GetType();
&nbs[FS:Page]p; myDataColumn.ColumnName = myRow[0].ToString();
datatable.Columns.Add(myDataColumn);
}
&nbs[FS:Page]p; //添加数据
while(dataReader.Read())
{
&n[FS:Page]bsp; DataRow myDataRow = datatable.NewRow();
for(int i=0;i<schemaTable.Rows.Count;i++)
[FS:Page]; {
myDataRow[i] = dataReader[i].ToString();
//--------------------------------------------这里是出错位置!!!
&nb[FS:Page]sp; }
datatable.Rows.Add(myDataRow);
myDataRow = null;
&n[FS:Page]bsp; }
schemaTable = null;
dataReader.Close();
&nbs[FS:Page]p; return datatable;
}
catch(Exception ex)
{
&nbs[FS:Page]p; Error.Log(ex.ToString());
throw new Exception("转换出错出错!",ex);
}
[FS:Page];
}
上述代码在 .Net 1.1环境下没有问题,升级到.Net 2.0后,运行时报错:
值类型与列类型不匹配
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentException: 值类型与列类型不匹配
源错误:
行 38: &nbs[FS:Page]p; for(int i=0;i<schemaTable.Rows.Count;i++)
行 39: {
行 &[FS:Page]nbsp; 40: myDataRow[i] = dataReader[i].ToString();
行 41: }
行 42: [FS:Page] datatable.Rows.Add(myDataRow);
源文件: E:\inetpub\wwwroot\Components\Tool.cs 行: 40
堆栈跟踪:
[ArgumentException: 值类型与列类型不匹配]
System.Data.Common.ObjectStorage.Set(Int32 recordNo, Object value) +955
System.Data.DataColumn.set_Item(Int32 record, Object value) +37
[ArgumentException: 值类型与列类型不匹配不能在 DocID 列中存储 &nb[FS:Page]sp; <65>。所需类型是 DataRow。]
System.Data.DataColumn.set_Item(Int32 record, Object value) +72
System.Data.DataRow.set_Item(DataColumn column, Object value) +194
System.Data.DataRow.set_Item(Int32 columnIndex, Object value) +25
UDS.Components.Tools.ConvertDataReaderToDataTable(SqlDataReader dataReader) in E:\inetpub\wwwroot\Components\Tool.cs:40
[Exception: 转换出错出错!]
UDS.Components.Tools.ConvertDataReaderToDataTable(SqlDataReader dataReader) in E:\inetpub\wwwroot\Components\Tool.cs:52
UDS.SubModule.UnitiveDocument.Desktop.Bangding() in E:\
ASP.NET中值类型与列类型不匹配的问题
转载于:https://www.cnblogs.com/9who/archive/2008/07/28/1254398.html