ConnectionクラスのGetSchemaメソッド
ConnectionクラスのGetSchemaメソッドを呼び出すと、接続したデータベースのテーブル名や列名などのスキーマ情報を取得することができます。スキーマ情報は、DataTableオブジェクトとして返されます。
GetSchema("Tables")とGetSchema("Columns")
GetSchema メソッドの引数に、"Tables"を指定すれば、全テーブル名を、"Columns"を指定すれば、全テーブルの全列名(フィールド名)を取得できます。
1番目の引数に"Columns"を指定して、第2引数にテーブル名を指定すれば、引数に指定したテーブルの列名だけを取得できます。
Dim con As New System.Data.OleDb.OleDbConnection() Dim dtTableName As DataTable Dim dtColumns As DataTable Dim sColumns As DataTable Try ' DB接続文字列の設定 ' プロジェクトフォルダ下のbinフォルダにsample.mdbを置く con.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _ Application.StartupPath & "\sample.mdb" ' DB接続を開く con.Open() ' テーブル名取得 dtTableName = con.GetSchema("Tables") ' 列名取得 dtColumns = con.GetSchema("Columns") ' 社員テーブルの列名取得 sColumns = con.GetSchema("Columns",New String() _ {Nothing, Nothing, "社員テーブル"}) '----------< スキーマ情報確認>---------- Debug.WriteLine("*** テーブル名表示 ***") For i As Integer = 0 To dtTableName.Rows.Count - 1 Debug.WriteLine _ (dtTableName.Rows(i)("TABLE_NAME").ToString) Next i Debug.WriteLine("*** 列名表示 ***") For i As Integer = 0 To dtColumns.Rows.Count - 1 Debug.WriteLine (dtColumns.Rows(i)("COLUMN_NAME").ToString) Next i Debug.WriteLine("*** 社員テーブル列名表示 ***") For i As Integer = 0 To sColumns.Rows.Count - 1 Debug.WriteLine _ (sColumns.Rows(i)("COLUMN_NAME").ToString) Next i Catch ex As Exception ' 例外が発生した時の処理 MessageBox.Show(ex.ToString, "例外発生") Finally ' DB接続を閉じる If Not con Is Nothing Then con.Close() End If End Try