动态列出数据库表中的字段
本文关键字:字段 数据库 动态 | 更新日期: 2023-09-27 18:31:13
有没有办法查询数据库以检索有关表架构的信息? 我只对获取列名称的列表以及它们是否为主键感兴趣;这可能吗?我不关心类型,只关心它的名称以及它是否是主键。
示例表:
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。我认为使用系统表应该可以做到这一点,但我不知道该怎么做。
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
系统视图包含大量数据,易于使用。
你可以通过这种黑客查询获取字段名称
select * from Organism where 1=2
元数据可以使用信息架构视图进行检索,例如键用法:
SELECT * FROM databaseName.INFORMATION_SCHEMA.KEY_COLUMN_USAGE
Where TABLE_NAME='Organism'