我试图确定在运行时sql服务器表列的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)。
编辑:为回答乔尔,我试图做一个我可以调用的函数,当传递一个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"];
关于c# - 如何使用ADO.NET获取表中列的SqlDbType?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/459572/