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

このようなハッククエリでフィールド名を取得できます

select * from Organism where 1=2

また、キーの使用法など、情報スキーマ ビューを使用してメタデータを取得できます。

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