当前位置:编程学习 > C#/ASP.NET >>

System.ArgumentException: 值类型与列类型不匹配

刚下载了一个OA系统源码。
但出现了如题上的错误。

代码如下。


public static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
{
DataTable datatable = new DataTable();
DataTable schemaTable = dataReader.GetSchemaTable();
            
//动态添加列
try
{

foreach(DataRow myRow in schemaTable.Rows)
{
DataColumn myDataColumn = new DataColumn();
    myDataColumn.DataType = myRow.GetType();
myDataColumn.ColumnName = myRow[0].ToString();
datatable.Columns.Add(myDataColumn);
}
//添加数据
while(dataReader.Read())
{
DataRow myDataRow = datatable.NewRow();
for(int i=0;i<schemaTable.Rows.Count;i++)
{
myDataRow[i] = dataReader[i].ToString();(提示这行出错) }
datatable.Rows.Add(myDataRow);
myDataRow = null;
}
schemaTable = null;
dataReader.Close();
return datatable;
}
catch(Exception ex)
{
///抛出类型转换错误
throw new Exception("转换出错出错!",ex);
}



请大侠们解决一下。。谢谢。。最好说明一下原因。 --------------------编程问答--------------------

    while(dataReader.Read())
                {
                    DataRow myDataRow = datatable.NewRow();
                    for(int i=0;i<schemaTable.Rows.Count;i++)
                    {
                        myDataRow[i] = dataReader[i].ToString();(提示这行出错)[/color]                    }
                    datatable.Rows.Add(myDataRow);
                    myDataRow = null;
                }

--------------------编程问答-------------------- 都不写 出错提示怎么看呀? --------------------编程问答--------------------
引用 2 楼 zhangmsnet 的回复:
都不写 出错提示怎么看呀?


出错提示就是如题:
System.ArgumentException: 值类型与列类型不匹配
这个错误啊。 --------------------编程问答-------------------- myDataRow[i] = dataReader[i]; --------------------编程问答-------------------- for(int i=0;i<schemaTable.Rows.Count;i++)

这里应该遍历列 不是遍历行 --------------------编程问答--------------------
引用 5 楼 sandy945 的回复:
for(int i=0;i<schemaTable.Rows.Count;i++)

这里应该遍历列 不是遍历行

那应该怎么改呢? --------------------编程问答-------------------- for(int i=0;i<schemaTable.Columns.Count;i++)

--------------------编程问答--------------------
引用 7 楼 sandy945 的回复:
for(int i=0;i<schemaTable.Columns.Count;i++)


还是出错。。错误信息还是值类型和列类型不匹配。、 --------------------编程问答--------------------
引用 7 楼 sandy945 的回复:
for(int i=0;i<schemaTable.Columns.Count;i++)


还是出错。。错误信息还是值类型和列类型不匹配。、
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,