c# 判断 sql 字段的类型

来源:百度知道 编辑:UC知道 时间:2024/06/17 15:57:37
比如有一张表table1,然后有字段id(int),name(nverchar(50)),mark(ntext)
怎么确定这三个字段是什么类型的
我尝试过用getType返回过类型,但是输出如下:
System.String|System.DBNull|System.Double|System.Int32
实际上我定义的参数是:
nverchar(50) nverchar(50) float int
第一个和最后一个是对的,float变成double我也没意见,但是第二个变成DBNull了就无法忍受了
所以希望有更好的方法

很久以前做代码生成器的时候写过这个东西,找出来看看。(只适用于SQL Server)

以下SQL获取当前数据库所有表以及表中的字段的信息,要获取特定表的信息,只需加一句 “and t.name = @tname”
SELECT c.name AS ColumNname, t2.name AS Type, c.max_length AS MaxLength, c.precision, c.scale, c.is_nullable AS Nullable,
t.name AS TableName
FROM sys.tables AS t INNER JOIN
sys.columns AS c ON c.object_id = t.object_id INNER JOIN
sys.systypes AS t2 ON c.user_type_id = t2.xusertype LEFT OUTER JOIN
(SELECT B.COLUMN_NAME, 1 AS P, B.TABLE_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS A INNER JOIN
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS B ON A.TABLE_NAME = B.TABLE_NAME AND
A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
WHERE (A.CONSTRAINT_TYPE = 'PRIMARY KEY')) AS P2 ON c.name = P2.COLUMN_NAME AND
t.name = P2