繁体   English   中英

从C#代码中查找SQL Server数据类型nvarchar的可变长度

[英]find variable length for sql server datatype nvarchar from c# code

我可以从ASP.NET应用程序中的C#代码中找到SQL Server 2008中nvarchar类型的允许的可变长度吗?

例如:

nvarchar(?)

我想找到“?”的最大允许数量。 从C#代码。

您可以使用此T-SQL查询来查看系统目录视图:

SELECT 
    [max_length]
FROM sys.columns 
WHERE [object_id] = OBJECT_ID('YourTableNameHere')
AND name = 'YourColumnNameHere'

这将返回存储的已定义的最大长度(以字符为单位)

更新:如果要查找类型的最大长度(而不是任何表的列),则可以使用以下查询代替:

SELECT 
    name, max_length
FROM sys.types 
WHERE name IN ('varchar', 'nvarchar')

请注意 :这将返回最大长度( 以字节为单位) (而不是字符!),因此两种类型的值都为8000。 对于varchar ,8000个字节等于8000个字符,而对于nvarchar ,8000个字节对应4000个字符。

请使用TableSchema方法获取column的所有详细信息。

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);
        }
    }

谢谢 。

您可以使用SqlParameter.Size属性:

对于具有可变长度类型的输出参数(例如nvarchar),参数的大小定义了保存输出参数的缓冲区的大小。 可以将输出参数截断为Size指定的大小。 对于字符类型,“大小”指定的大小以字符为单位。

请参阅MSDN文档


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

阅读本文以了解操作方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM