2012-03-01 6 views
3

特定のテーブルのプライマリキーのカラム名を取得するためにアクセスデータベースに書き込む必要があるクエリ。アクセスデータベースのテーブルのプライマリキーを取得するクエリ

私は、ファイル形式が.mdbのc#とアクセスデータベースを使用しています。私はOleDbConnectionクラスを使用しています。

sys.information_schemaからselect columnNameのようなクエリを使用して、アクセスデータベースにプライマリキーのカラム名を取得したいとします。このクエリはSQL Serverで動作します。私はmsアクセスで動作するこのようなクエリが欲しいです。

ありがとうございました。

+0

はperticular表に主キーを持っているか、いない、それは主キーを持っている場合、プライマリキーが含まれているカラム名を返すチェックするAccessデータベースのための任意のクエリがあるです。私はクエリを使ってこれをやりたい – Awadhendra

答えて

3

これは助けになることができます。コメントの後http://msdn.microsoft.com/en-us/library/system.data.datatable.primarykey.aspx

編集:これと一緒にhttp://gsraj.tripod.com/dotnet/ado_net/ado.net_retrieving_database_metadata.html

私が間違っていた:

SELECT MSysObjects.* FROM MSysObjects 

あなたがカントー詳細をグーグルする必要があります、どうぞ...

+0

テーブルに関連付けられた主キー列名を与えるクエリが必要です。上記のリンクは、OleDbConnectionクラスを使用して行いましたが、クエリは行いません。私はすでにOleDbConnectionクラスでそれを行っていましたが、私はそれをクエリを使ってやりたいと思います。 – Awadhendra

+0

誤解されていなければ、msjetエンジンはメタデータテーブルを持ちません.ADO.netを使用する必要がありますが、100%確実ではありません。 – mindandmedia

+0

これはかなり後であり、クエリが必要だとわかっていますが、いくつかの追加情報があります。1)OLEプロバイダを使用してクエリでプライマリキーを見つけることができないと思います。 2)GetOleDbSchemaTable(OleDbSchemaGuid.Columns、null)を使用してプライマリキーを取得できます。少なくともそれは私の場合に働いた。 –

0

私は実際にそれを考え出しました。ちょうどAwadhendraが私がしたものである隠されているプラ​​イマリの列を作らなければならないと言ったように。

これは、隠されている最初の列を取得したコードです。

String SelectedID = dgvInventory.Rows[dgvInventory.CurrentRow.Index].Cells[0].Value.ToString(); 
関連する問題