小编典典

从SQL DB读取架构名称,表名称和列名称,然后返回到C#代码

sql

我有一个数据库(在SQL Server 2008
SP3中),并且需要C#代码中相关层次结构中的所有架构名称,表名称和列名称,我具有以下SQLElement类:

 public class SQLElement
{
    public string SchemaName { get; set; }
    public string TableName { get; set; }
    public string ColumnName { get; set; }
}

并有一个像这样的列表:

List<SQLElement> SQLElementCollection = new List<SQLElement>();

那么,如何从数据库读取 名称 并将其添加到此列表(SQLElementCollection)中呢?

例如,假设我们创建一个像这样的表:

Create Table [General].[City] (
 [Id]           BIGINT          NOT NULL    IDENTITY(1, 1),
 [Title]        NVARCHAR(30)    NOT NULL    DEFAULT (N''),
 [Province_Id]  BIGINT          NOT NULL
)

我需要像这样的列表:

[0]={SchemaName="General", TableName="City", ColumnName="Id"} 
[1]={SchemaName="General", TableName="City", ColumnName="Title"} 
[2]={SchemaName="General", TableName="City", ColumnName="Province_Id"}

有人对此有任何想法吗?

编辑:

在下一步中,我们如何获取每个列的类型或相关属性?


阅读 174

收藏
2021-04-22

共1个答案

小编典典

我的建议是DataTypeSQLElement如果您具有更改权限或使用属性名称创建另一个类,DataType然后从中继承SQLElement,然后将数据类型名称保存到该类中供以后使用,并在下面查询所有信息,请使用其他成员,谢谢。

SELECT t.name AS TableName,
    SCHEMA_NAME(t.schema_id) AS SchemaName,
    c.name AS ColumnName,
    tp.name as DataType
FROM sys.tables AS t
    INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
    INNER JOIN sys.types tp ON c.system_type_id =  tp.system_type_id
ORDER BY TableName;
2021-04-22