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