SqlDataReader中的DataType方法辨析

在一项目中用到 SqlDataReader,想把 SqlDataReader结果转换成datatable 于是从网上拷贝下一段代码运行。其他类型都没有问题。唯独自己用的的数据类型byte[] 却出现了异常,当时感觉很奇怪。
于是开始分析:
1.判断 SqlDataReader中是否有值。监视后发现数据源中一切正常。排除数据源问题。
2.从GetSchemaTable方法后,取得的列共23,具体内容msdn上有。
3.将接收表的数据类型强制改成byte[],却一切正常。看来是数据格式转换出了问题。
4.发现网上代码如下:
foreach (DataRow myRow in schemaTable.Rows) {
     DataColumn myDataColumn = new DataColumn();
     myDataColumn.DataType = myRow[0].GetType();
     myDataColumn.ColumnName = myRow[0].ToString();
     datatable.Columns.Add(myDataColumn);
    }
其中根据myRow[0]查看当然是ColumnName,如此以来是肯定取出标题的类型,何来列的类型?
问题找到,改正运行,果然一切ok.

你可能感兴趣的:(reader)