我可以从asp.net应用程序中的c#代码中找到sql server 2008中nvarchar类型的允许变量长度吗?
例如:
nvarchar(?)
我想找到“?”允许的最大数量来自c#代码。
答案 0 :(得分:2)
您可以使用此T-SQL查询来查看系统目录视图:
SELECT
[max_length]
FROM sys.columns
WHERE [object_id] = OBJECT_ID('YourTableNameHere')
AND name = 'YourColumnNameHere'
这将返回列的
存储的,定义的最大长度(以字符为单位)更新:如果您想查找类型的最大长度(不是任何表格的列),您可以改为使用此查询:< / p>
SELECT
name, max_length
FROM sys.types
WHERE name IN ('varchar', 'nvarchar')
请注意:这会返回最大长度,以字节为单位(不是字符!),因此您可以获得两种类型的8000。对于varchar
,8000字节等于8000个字符,而对于nvarchar
,8000字节对应于4000个字符。
答案 1 :(得分:1)
请使用TableSchema方法获取列的所有详细信息。
SqlDataReader reader = command.ExecuteReader();
using (var schemaTable = reader.GetSchemaTable())
{
foreach (DataRow row in schemaTable.Rows)
{
string ColumnName= row.Field<string>("ColumnName");
string DataTypeName= row.Field<string>("DataTypeName");
short NumericPrecision= row.Field<short>("NumericPrecision");
short NumericScale= row.Field<short>("NumericScale");
int ColumnSize= row.Field<int>("ColumnSize");
Console.WriteLine("Column: {0} Type: {1} Precision: {2} Scale: {3} ColumnSize {4}",
ColumnName, DataTypeName, NumericPrecision, scale,ColumnSize);
}
}
谢谢。
答案 2 :(得分:0)
您可以使用.Size
的{{1}}属性:
对于具有可变长度类型(例如,nvarchar)的输出参数,参数的大小定义保存输出参数的缓冲区的大小。输出参数可以截断为Size指定的大小。对于字符类型,使用Size指定的大小为字符。
如果您指的是数据库字段,则可以使用SqlParameter
对象中的.GetSchemaTable()
方法获取数据。 DataReader
属性包含您需要的信息。
阅读this article以了解如何操作。