OleDbDataAdapterのTableMappingsコレクションを使用したサンプル

図 OleDb DataAdapterのTableMappingsコレクションを使用したサンプル
このサンプルは、AccessのNwind.mdbデータベースの得意先テーブルを抽出して表示します。DataSetに格納されている得意先テーブルを表示するとき、TableMappingsコレクションのAdd()メソッドでテーブル名をマッピングして日本語化しています。また、ColumnMappingsコレクションのAdd()メソッドで得意先テーブルのカラム(フィールド)もマッピングして日本語化しています。
このサンプルでは、以下のノウハウを習得することができます。
▲ DataTableのテーブル名をマッピングする方法
▲ DataTableのカラム(フィールド)をマッピングする方法
サンプルのPage_Load()イベントでは、AccessのNwind.mdbデータベースの得意先テーブルのテーブル名とカラムをマッピングして表示します。行8-9では、得意先テーブルから得意先ID、得意先名、担当者名、電話番号を抽出するSQLを生成しています。行10-13では、OleDbConnection、OleDbDataAdapter、DataSetのインスタンスを生成しています。
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では、OleDbDataAdapterのTableMappings.Add()メソッドでDataTableMappingを生成しています。Add()メソッドには、旧テーブル名と新テーブル名を指定してマッピングします。行18-23のWith…End Withでは、DataTableMappingのColumnMappings.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では、OleDbDataAdapterのFill()メソッドで得意先テーブルをDataSetに格納して表示します。行25では、Fill()メソッドで得意先テーブルのレコードを抽出してDataSetに格納します。Fill()メソッドでsrcTableを省略していますので、デフォルトのTableが割り当てられます。行26では、DataSetのTablesコレクションから得意先テーブルのDataTableを生成しています。行29では、DataTableのTableNameプロパティに格納されているテーブル名を表示します。テーブル名「Table」は、「得意先」にマッピングされて表示されます。
行30-36のFor Each…Nextでは、DataTableのRo
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.Ro
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