我试图在运行时确定 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"];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)