【问题标题】:Get columns size along with column name and datatype获取列大小以及列名和数据类型
【发布时间】:2016-12-09 14:29:26
【问题描述】:

我正在尝试从 SQL Server 数据库中获取所选表和数据库的列、数据类型和列大小。

到目前为止,我已成功获取列名和数据类型,但我也想获取大小。

示例:假设我在 SQL Server 数据库表中有 2 列,如下所示:

1) Name nvarchar(30)
3) Salary decimal(6,2)

现在我可以使用 nvarcharsalary 数据类型获取姓名和薪水,但大小未到来。

代码:

String[] columnRestrictions = new String[4];
columnRestrictions[0] = 'MyDb';
columnRestrictions[1] = 'dbo';
columnRestrictions[2] = 'Employee';
using (SqlConnection con = new SqlConnection("MyConnectionString"))
{
    con.Open();
    var columns = con.GetSchema("Columns", columnRestrictions).AsEnumerable()
        .Select(c => new (c[3].ToString(), c.Field<string>("DATA_TYPE"))).ToList();

我得到的结果如下:

Name nvarchar
Salary decimal

预期结果:

1) Name nvarchar(30)
3) Salary decimal(6,2)

源码:Reference

有可能得到以上结果吗?

【问题讨论】:

    标签: c# .net sql-server linq ado.net


    【解决方案1】:

    您可以将 CHARACTER_OCTET_LENGTH 用于 char/varchar,将 Numeric_precision + Numeric_Scale 用于数字类型。

    【讨论】:

    • 一般来说是正确的,除了 char/nvarchar 我宁愿说使用 character_maximum_length 列值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2012-06-16
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多