ReadData.GetValue(i).GetType().ToString();这样可以等到该列的数据类型,值一般是"System.String","System.Decimal"之类的,但当该列值为空的时候,得到的值就是
System.DBNull类型,看不出数据库中是什么啊,其实我要做一个SQL语句的拼接,只有知道它确切的类型,才做判断加不加引号,或者值为空的时候默认的是空字符,还是数字0,还是日期等

解决方案 »

  1.   

    可以通过SQL读出表中各列的数据类型
    Select   Case When Sysobjects.Xtype = 'U'
               Then '用户表'
               Else '视图'
            End As '表类型',
            Sysobjects.Name As '表名', 
            Syscolumns.Name As '列名', 
            Systypes.Name As '类型', 
            Syscolumns.Length As '长度', 
            Case When Syscolumns.Name In (
               Select A.Name 
               From Syscolumns A Inner Join Sysobjects B On 
                  A.Id=B.Id And 
                  B.Xtype='U' And 
                  B.Name<>'Dtproperties' 
               Where Exists (
                  Select 1 From Sysobjects 
                     Where Xtype='Pk' And Name In ( 
                        Select Name From Sysindexes Where Indid In( 
                           Select Indid From Sysindexkeys Where Id = A.Id And Colid=A.Colid 
                        )
                     )
                  ) And 
                  B.Name = Sysobjects.Name 
               )
               Then 1 
               Else 0 
            End As '主键',
            Isnull(syscomments.text,'') as '默认值',
            Isnull(Sysproperties.Value,'') As '说明' From     Sysobjects,
             Systypes,
             Syscolumns Left Join Sysproperties On (
                Syscolumns.Id = Sysproperties.Id And 
                Syscolumns.Colid = Sysproperties.Smallid
             ) left join syscomments on (
                Syscolumns.cdefault = syscomments.id
             )
           
    Where    (Sysobjects.Xtype ='U' Or Sysobjects.Xtype ='V') And 
             (Sysobjects.Id = Syscolumns.Id) And 
             (Systypes.Xtype = Syscolumns.Xtype) And 
             (Systypes.Name <> 'Sysname') And 
            (Sysobjects.Name Like '%%')--要查的表的名字Order By Sysobjects.Xtype,
             Sysobjects.Name, 
             Syscolumns.Colid
      

  2.   

    该列不空,该列的值空

    ID name class
    1   aa  null
    class这列实际类型是string