GetSchemaメソッド [VB.NET]

Visual Basic.NET ADO.NETデータベースプログラミング

ConnectionクラスのGetSchemaメソッド

ConnectionクラスのGetSchemaメソッドを呼び出すと、接続したデータベースのテーブル名や列名などのスキーマ情報を取得することができます。スキーマ情報は、DataTableオブジェクトとして返されます。

GetSchema("Tables")とGetSchema("Columns")

VB 2010 / VB 2008(SQL Server)

VB.NET(Ole Db)版

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