1

JET OLEDB 接続を介して Access データベースを使用する C# で記述されたアプリケーションの場合:

ユーザーがキーワードを含むテーブルの値を編集できるようにするインターフェイスを作成しています(関連するテーブルがいくつかありますが、一般的にしようとしています)。

テーブルにはいくつかの列が含まれています。一部の列には「重複なし」の制約があり、一部の列にはありません。「重複なし」制約に違反しないように、エントリをテーブルに書き込む前にエントリ全体をチェックできるように、どの列に「重複なし」制約があるかを判断できる必要があります。(書き込み時にエラーをキャッチできることはわかっていますが、実際にはそこに行きたくありません。)

Access データベースのテーブルのどの列に一意 (重複なし) 制約があるかを判断するにはどうすればよいですか?

ありがとうございました

-志

4

1 に答える 1

2

Unique 列で True のインデックス スキーマを確認できます。非常に大雑把なメモ:

//http://msdn.microsoft.com/en-us/library/ms135981.aspx
    //Or Microsoft.Jet.OLEDB.4.0
OleDbConnection cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; "
   + "Data Source=" + pathToAccessDb);
cn.Open();

//Retrieve schema information
DataTable columns = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Indexes,
             new Object[] { null, null, null, null, "Table1" });

foreach (DataRow row in columns.Rows)
{
   Console.WriteLine(row["COLUMN_NAME"].ToString());
   Console.WriteLine(row["TABLE_NAME"].ToString());
   Console.WriteLine(row["UNIQUE"].ToString());
}

cn.Close();

//Pause
Console.ReadLine();
于 2012-05-10T09:02:07.013 に答える