2012-04-13 28 views
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。我認爲這應該是可能的使用系統表,但我不知道該怎麼做。

回答

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 

系統視圖包含豐富的數據,它們很容易使用。

+0

折騰加入到SYS.INDEXES和SYS。 index_columns表來獲得主鍵信息。 – 2012-04-13 13:42:14

+0

我認爲PK是在sys.columns。聚集索引位於sys.index中,但這是一個不同的概念。 – usr 2012-04-13 13:47:17

1

你可以得到字段名這樣的哈克查詢

select * from Organism where 1=2 

和元數據可以Information Schema Views檢索,例如密鑰用法:

SELECT * FROM databaseName.INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
Where TABLE_NAME='Organism' 
相關問題