DataAdapter DataTable と DataColumn のマップDataAdapter DataTable and DataColumn Mappings

A DataAdapter 0 個以上のコレクションを含むDataTableMappingオブジェクトでそのTableMappingsプロパティ。A DataAdapter contains a collection of zero or more DataTableMapping objects in its TableMappings property. A DataTableMapping 、データ ソースに対するクエリから返されるデータ間のマスター マップを提供し、DataTableします。A DataTableMapping provides a master mapping between the data returned from a query against a data source, and a DataTable. DataTableMappingの代わりに名前を渡すことができます、 DataTable名、入力のメソッド、 DataAdapterします。The DataTableMapping name can be passed in place of the DataTable name to the Fill method of the DataAdapter. 次の例では、作成、 DataTableMappingというAuthorsMapping作成者テーブル。The following example creates a DataTableMapping named AuthorsMapping for the Authors table.

workAdapter.TableMappings.Add("AuthorsMapping", "Authors")  
workAdapter.TableMappings.Add("AuthorsMapping", "Authors");  

A DataTableMappingで列名を使用することができます、 DataTableデータベースと異なります。A DataTableMapping enables you to use column names in a DataTable that are different from those in the database. DataAdapterテーブルが更新されたときに、列を一致するように、マップを使用します。The DataAdapter uses the mapping to match the columns when the table is updated.

指定しない場合、 TableNameまたはDataTableMapping名前を呼び出すときに、入力またはUpdateのメソッド、 DataAdapterDataAdapter探し、 DataTableMapping "Table"という名前です。If you do not specify a TableName or a DataTableMapping name when calling the Fill or Update method of the DataAdapter, the DataAdapter looks for a DataTableMapping named "Table". その場合DataTableMappingが存在しない、 TableNameDataTable 「テーブル」です。If that DataTableMapping does not exist, the TableName of the DataTable is "Table". 既定値を指定するDataTableMappingを作成して、 DataTableMapping "Table"の名前に置き換えます。You can specify a default DataTableMapping by creating a DataTableMapping with the name of "Table".

次のコード例を作成、 DataTableMapping (から、System.Data.Common名前空間) になり、指定された既定のマッピングDataAdapter "Table"名前を付けて、します。The following code example creates a DataTableMapping (from the System.Data.Common namespace) and makes it the default mapping for the specified DataAdapter by naming it "Table". 例では、クエリ結果の最初のテーブルから列をマップし、(、顧客のテーブル、 Northwindデータベース) でよりわかりやすい名前のセットに、 Northwind の Customersテーブルに、DataSetします。The example then maps the columns from the first table in the query result (the Customers table of the Northwind database) to a set of more user-friendly names in the Northwind Customers table in the DataSet. 割り当てられない列には、データ ソースの列名が使用されます。For columns that are not mapped, the name of the column from the data source is used.

Dim mapping As DataTableMapping = _  
  adapter.TableMappings.Add("Table", "NorthwindCustomers")  
mapping.ColumnMappings.Add("CompanyName", "Company")  
mapping.ColumnMappings.Add("ContactName", "Contact")  
mapping.ColumnMappings.Add("PostalCode", "ZIPCode")  
  
adapter.Fill(custDS)  
DataTableMapping mapping =   
  adapter.TableMappings.Add("Table", "NorthwindCustomers");  
mapping.ColumnMappings.Add("CompanyName", "Company");  
mapping.ColumnMappings.Add("ContactName", "Contact");  
mapping.ColumnMappings.Add("PostalCode", "ZIPCode");  
  
adapter.Fill(custDS);  

高度な状況は、同じすることを決めることがありますDataAdapter異なるマッピングに別のテーブルの読み込みをサポートするためにします。In more advanced situations, you may decide that you want the same DataAdapter to support loading different tables with different mappings. これを行うには、追加DataTableMappingオブジェクト。To do this, simply add additional DataTableMapping objects.

ときに、入力メソッドのインスタンスに渡されます、データセットDataTableMapping名、その名前の割り当てが存在する場合はそれ以外を 。DataTable名を使用するとします。When the Fill method is passed an instance of a DataSet and a DataTableMapping name, if a mapping with that name exists it is used; otherwise, a DataTable with that name is used.

次の例では、作成、 DataTableMappingという名前の顧客DataTableの名前BizTalkSchemaします。The following examples create a DataTableMapping with a name of Customers and a DataTable name of BizTalkSchema. 例では、SELECT ステートメントによって返される行をマップし、 BizTalkSchema DataTableします。The example then maps the rows returned by the SELECT statement to the BizTalkSchema DataTable.

Dim mapping As ITableMapping = _  
  adapter.TableMappings.Add("Customers", "BizTalkSchema")  
mapping.ColumnMappings.Add("CustomerID", "ClientID")  
mapping.ColumnMappings.Add("CompanyName", "ClientName")  
mapping.ColumnMappings.Add("ContactName", "Contact")  
mapping.ColumnMappings.Add("PostalCode", "ZIP")  
  
adapter.Fill(custDS, "Customers")  
ITableMapping mapping =   
  adapter.TableMappings.Add("Customers", "BizTalkSchema");  
mapping.ColumnMappings.Add("CustomerID", "ClientID");  
mapping.ColumnMappings.Add("CompanyName", "ClientName");  
mapping.ColumnMappings.Add("ContactName", "Contact");  
mapping.ColumnMappings.Add("PostalCode", "ZIP");  
  
adapter.Fill(custDS, "Customers");  

注意

列マップにソースの列名を指定しなかった場合、またはテーブル マップにソース テーブル名を指定しなかった場合は、自動的に既定の名前が生成されます。If a source column name is not supplied for a column mapping or a source table name is not supplied for a table mapping, default names will be automatically generated. 列マッピングの基になる列が指定されていない場合、列マッピングが指定されたインクリメンタル既定名SourceColumn N、 以降SourceColumn1します。If no source column is supplied for a column mapping, the column mapping is given an incremental default name of SourceColumn N, starting with SourceColumn1. テーブル マップにソース テーブル名が指定されていない場合、テーブル マッピングが指定されたインクリメンタル既定名SourceTable N以降のSourceTable1します。If no source table name is supplied for a table mapping, the table mapping is given an incremental default name of SourceTable N, starting with SourceTable1.

注意

名前付け規則を回避することをお勧めしますSourceColumn N列マッピング、またはSourceTable Nテーブル。マッピングを指定した名前の既存の既定の列マッピング名と競合する可能性があるため、 ColumnMappingCollectionまたはテーブル マッピング名、 DataTableMappingCollection.We recommend that you avoid the naming convention of SourceColumn N for a column mapping, or SourceTable N for a table mapping, because the name you supply may conflict with an existing default column mapping name in the ColumnMappingCollection or table mapping name in the DataTableMappingCollection. 指定した名前が既に存在する場合は、例外がスローされます。If the supplied name already exists, an exception will be thrown.

複数の結果セットの処理Handling Multiple Result Sets

場合、 SelectCommand複数のテーブルを返します入力内のテーブルの増分値を持つテーブル名を自動的に生成、データセット以降のテーブルの名前と続行の形式で指定TableName N以降のTableName1します。If your SelectCommand returns multiple tables, Fill automatically generates table names with incremental values for the tables in the DataSet, starting with the specified table name and continuing on in the form TableName N, starting with TableName1. 内のテーブルに指定名前に自動的に生成されたテーブル名をマップするテーブルのマッピングを使用することができます、データセットします。You can use table mappings to map the automatically generated table name to a name you want specified for the table in the DataSet. たとえば、 SelectCommand 2 つのテーブルを返す顧客注文、に対する次の呼び出しを発行入力します。For example, for a SelectCommand that returns two tables, Customers and Orders, issue the following call to Fill.

adapter.Fill(customersDataSet, "Customers")  

2 つのテーブルに作成されます、データセット:顧客Customers1します。Two tables are created in the DataSet: Customers and Customers1. テーブル マッピングを使用するには 2 つ目のテーブルの名前がいることを確認する注文の代わりにCustomers1します。You can use table mappings to ensure that the second table is named Orders instead of Customers1. これを行うには、マップのソース テーブルCustomers1データセットテーブル注文次の例のようにします。To do this, map the source table of Customers1 to the DataSet table Orders, as shown in the following example.

adapter.TableMappings.Add("Customers1", "Orders")  
adapter.Fill(customersDataSet, "Customers")  

関連項目See also