我有一个数据库(在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"}
有人对此有任何想法吗?
编辑:
在下一步中,我们如何获取每个列的类型或相关属性?
我的建议是DataType,SQLElement如果您具有更改权限或使用属性名称创建另一个类,DataType然后从中继承SQLElement,然后将数据类型名称保存到该类中供以后使用,并在下面查询所有信息,请使用其他成员,谢谢。
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;