加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何使用ADO.NET获取表中列的SqlDbType?

发布时间:2020-12-15 18:35:13 所属栏目:百科 来源:网络整理
导读:我试图在运行时确定sql server表列的SqlDbType是什么. 是否有一个类可以在System.Data.SqlClient中执行该操作,还是应该自己进行映射?我可以从中获取字符串表示 SELECT DATA_TYPE,CHARACTER_MAXIMUM_LENGTHFROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATA
我试图在运行时确定sql server表列的SqlDbType是什么.

是否有一个类可以在System.Data.SqlClient中执行该操作,还是应该自己进行映射?我可以从中获取字符串表示

SELECT DATA_TYPE,CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
   WHERE TABLE_CATALOG = '{0}' AND TABLE_SCHEMA = '{1}' 
   AND TABLE_NAME = '{2}' AND COLUMN_NAME = '{3}'

编辑:我不能使用SMO,因为我无法控制执行机器,所以我不能保证它将被安装. (抱歉没有说清楚rp).

编辑:回答Joel,我正在尝试创建一个我可以调用的函数,它会在传递SqlConnection,表名和列名时返回一个SqlDBType.

解决方法

在SQL Server中,您可以使用FMTONLY选项.它允许您在不获取任何数据的情况下运行查询,只返回列.
SqlCommand cmd = connection.CreateCommand();
cmd.CommandText = "SET FMTONLY ON; select column from table; SET FMTONLY OFF";
SqlDataReader reader = cmd.ExecuteReader();
SqlDbType type = (SqlDbType)(int)reader.GetSchemaTable().Rows[0]["ProviderType"];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读