3

有没有办法查询数据库以检索有关表架构的信息?我只对获取列名列表以及它们是否是主键感兴趣;这可能吗?我不关心类型,只关心它的名称以及它是否是主键。

样品表:

Table Organism
{
   primary: int ID;
   int Kingdom;
   int Phylum;
   int Class;
   int Genus;
   int Species;
   nvarchar(50) Name;
}

样品用法:

List<Tuple<string, bool>> t = ReadTable("Organism");
t.ForEach(x => Console.WriteLine(x.Item2 ? x.Item2 + ": " + x.Item1 : x.Item1));

样本输出:

True ID
Kingdom
Phylum
Class
Genus
Species
Name

我正在使用 C#4.0 和 SQL Server 2008 R2。我认为这应该可以使用系统表,但我不知道该怎么做。

4

2 回答 2

2
select col.*
from sys.columns col
join sys.tables tab on col.object_id = tab.object_id
where tab.name = @tabName
order by col.column_id

系统视图包含大量数据并且易于使用。

于 2012-04-13T13:28:51.767 回答
1

您可以使用这种 hacky 查询获取字段名称

select * from Organism where 1=2

并且可以使用Information Schema Views检索元数据,例如密钥用法:

SELECT * FROM databaseName.INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
Where TABLE_NAME='Organism' 
于 2012-04-13T13:29:06.010 回答