C# で DAL テンプレートを作成していますが、ODBC と OleDB を使用してスキーマ情報にアクセスする最も効率的な方法は何だろうと考えています。列、列の種類、および主キーの情報が必要です。
ありがとう
OleDb には、OleDbConnection.GetoleDbSchemaTable() メソッドがあります。アクセスで使用しました。
GitHub のこのコードに例があります: SchemaValidator.cs
OdbcConnection にも IIRC に .Schema() メソッドが必要です。
実際に返される値はデータベースによって異なる可能性があることに気付きました。そのため、かなりの量のチェックとデバッグを行って、返される値が何であるかを確認する必要があります。
SQL Server 管理オブジェクトを使用します。
http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.aspx
例えば:
Microsoft.SqlServer.Management.Smo.Server s = new
Microsoft.SqlServer.Management.Smo.Server( @"DUFF\SQLEXPRESS" );
foreach ( Database db in s.Databases )
{
if ( ! db.IsSystemObject )
{
listboxDatabase.Items.Add( db.Name );
}
}
ここから、データベース内のテーブル (およびその他のオブジェクト) を取得できます。