OleDbDataAdapterTableMappingsコレクションを使用したサンプル

OleDb DataAdapterTableMappingsコレクションを使用したサンプル

 

このサンプルは、AccessNwind.mdbデータベースの得意先テーブルを抽出して表示します。DataSetに格納されている得意先テーブルを表示するとき、TableMappingsコレクションのAdd()メソッドでテーブル名をマッピングして日本語化しています。また、ColumnMappingsコレクションのAdd()メソッドで得意先テーブルのカラム(フィールド)もマッピングして日本語化しています。

 

このサンプルでは、以下のノウハウを習得することができます。

 

  DataTableのテーブル名をマッピングする方法

  DataTableのカラム(フィールド)をマッピングする方法

 

サンプルのPage_Load()イベントでは、AccessNwind.mdbデータベースの得意先テーブルのテーブル名とカラムをマッピングして表示します。行8-9では、得意先テーブルから得意先ID、得意先名、担当者名、電話番号を抽出するSQLを生成しています。行10-13では、OleDbConnectionOleDbDataAdapterDataSetのインスタンスを生成しています。

 

  7: Sub Page_Load()
  8:   Dim strSQL As String = "Select top 3 CustomerID, CompanyName," & _
  9:     "ContactName, Phone From Customers"
 10:   Dim con As New OleDbConnection( _
 11:     ConfigurationSettings.AppSettings("conStringAccNw"))
 12:   Dim da As New OleDbDataAdapter(strSQL, con)
 13:   Dim ds As New DataSet()

:::
 37: End Sub

 

17-23では、得意先テーブルのテーブル名とカラム(フィールド)を日本語にマッピングしています。行17では、OleDbDataAdapterTableMappings.Add()メソッドでDataTableMappingを生成しています。Add()メソッドには、旧テーブル名と新テーブル名を指定してマッピングします。行18-23With…End Withでは、DataTableMappingColumnMappings.Add()メソッドで得意先テーブルのカラムをマッピングしています。Add()メソッドの引数には、旧カラムと新カラムを指定します。これで得意先テーブルのテーブル名とカラムが日本語にマッピングされます。

 

15:   Dim tblMap As DataTableMapping
 17:   tblMap = da.TableMappings.Add("Table", "
得意先")
 18:   With tblMap.ColumnMappings
 19:     .Add("CustomerID", "
得意先ID")
 20:     .Add("CompanyName", "
得意先名")
 21:     .Add("ContactName", "
担当者名")
 22:     .Add("Phone", "
電話番号")
 23:   End With

25-36では、OleDbDataAdapterFill()メソッドで得意先テーブルをDataSetに格納して表示します。行25では、Fill()メソッドで得意先テーブルのレコードを抽出してDataSetに格納します。Fill()メソッドでsrcTableを省略していますので、デフォルトのTableが割り当てられます。行26では、DataSetTablesコレクションから得意先テーブルのDataTableを生成しています。行29では、DataTableTableNameプロパティに格納されているテーブル名を表示します。テーブル名「Table」は、「得意先」にマッピングされて表示されます。

 

30-36For Each…Nextでは、DataTableRowsコレクションからDataRowを取り込んでいます。行31-34For Each…Nextでは、DataTableColumnsコレクションからDataColumnを取り込んでいます。行32-33では、ResponseWrite()メソッドで得意先テーブルのカラムとカラム値を表示しています。カラムは、DataColumnColumnNameプロパティから取得します。カラム値は、DataRowの引数にDataColumnを指定して取得しています。得意先テーブルのカラムは、日本語にマッピングされていますので、日本語で表示されます。行35では、ResponseWrite()メソッドでHTML<hr>タグを表示(送信)しています。

 

25:   da.Fill(ds)
 26:   Dim dt As DataTable = ds.Tables(0)
 27:   Dim dr As DataRow
 28:   Dim dc As DataColumn
 29:   Response.Write(String.Format("<h2>{0}</h2>", dt.TableName))
 30:   For Each dr In dt.Rows
 31:     For Each dc In dt.Columns
 32:       Response.Write(String.Format("<b>{0}</b>: {1}<br>", _
 33:        dc.ColumnName, dr(dc)))
 34:     Next
 35:     Response.Write("<hr>")
 36:   Next