1

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

例如:

nvarchar(?)

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

4

3 回答 3

2

您可以使用此 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 个字符。

于 2013-09-04T11:21:10.467 回答
1

请使用 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);
        }
    }

谢谢 。

于 2016-10-26T13:12:17.017 回答
0

您可以使用的.Size属性SqlParameter

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

请参阅MSDN 文档


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

阅读本文以了解如何操作。

于 2013-09-04T11:09:05.297 回答