从c#代码中找到sql server数据类型nvarchar的可变长度

时间:2013-09-04 10:54:23

标签: c# asp.net sql sql-server-2008

我可以从asp.net应用程序中的c#代码中找到sql server 2008中nvarchar类型的允许变量长度吗?

例如:

  

nvarchar(?)

我想找到“?”允许的最大数量来自c#代码。

3 个答案:

答案 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指定的大小为字符。

请参阅MSDN Documentation


如果您指的是数据库字段,则可以使用SqlParameter对象中的.GetSchemaTable()方法获取数据。 DataReader属性包含您需要的信息。

阅读this article以了解如何操作。