DataSet is a generic class, it doesn't keep the original data's datatype, try to use the Connection object's Get*SchemaTable method to retrieve the data type for the original data or seeHOW TO: Retrieve Column Schema by Using the DataReader GetSchemaTable Method and Visual C# .NET
http://support.microsoft.com/default.aspx?scid=kb;EN-US;310107

解决方案 »

  1.   

    我也不是太清楚,我是直接到SQL里去看的呀?
      

  2.   

    DataColumn.DataType
    就是C#的字段,和SQL SERVER的字段有不完全的对应关系
      

  3.   

    DataSet1.Tables[0].DataColumns[i].DataType
      

  4.   

    DataType得出的数据类型应该不完全是sql server中的数据类型,不过可以找出其中的规律,建立一个对应关系,并结合dataset的xmlschema得到一些精度、长度、粒度的信息。
    或者另外写sql语句从数据库中得到这些字段的类型。
      

  5.   

    datatable中不能完全对应到sql server的数据类型,需要知道在sql数据库字段的类型必须到sql server服务器中取,通过命令“sp_help  表名 ”,返回此表的所有列的类型及长度这才是你想要的结果是吧。
      

  6.   

    http://expert.csdn.net/Expert/topic/2450/2450423.xml?temp=.9883386
    直接从数据库中返回与DATASET对应的一张表就可以了。
      

  7.   

    DataReader的使用
    得到列信息。
    myReader.FieldCount     获取当前行中的列数
    myReader.GetFieldType(序号)   获取是对象的数据类型的 Type
    myReader.GetDataTypeName(序号)  获取源数据类型的名称
    myReader.GetName(序号)     获取指定列的名称
    myReader.GetOrdinal(序号)   在给定列名称的情况下获取列序号