DbDataAdapter.FillSchema メソッド (DataTable, SchemaType, IDbCommand, CommandBehavior)
アセンブリ: System.Data (system.data.dll 内)

Protected Overridable Function FillSchema ( _ dataTable As DataTable, _ schemaType As SchemaType, _ command As IDbCommand, _ behavior As CommandBehavior _ ) As DataTable
Dim dataTable As DataTable Dim schemaType As SchemaType Dim command As IDbCommand Dim behavior As CommandBehavior Dim returnValue As DataTable returnValue = Me.FillSchema(dataTable, schemaType, command, behavior)
protected virtual DataTable FillSchema ( DataTable dataTable, SchemaType schemaType, IDbCommand command, CommandBehavior behavior )
protected: virtual DataTable^ FillSchema ( DataTable^ dataTable, SchemaType schemaType, IDbCommand^ command, CommandBehavior behavior )
protected DataTable FillSchema ( DataTable dataTable, SchemaType schemaType, IDbCommand command, CommandBehavior behavior )
protected function FillSchema ( dataTable : DataTable, schemaType : SchemaType, command : IDbCommand, behavior : CommandBehavior ) : DataTable
戻り値
データ ソースから返されたスキーマ情報が格納された DataTable オブジェクト。

FillSchema メソッドは、SelectCommand を使用して、データ ソースからスキーマを取得します。SelectCommand に関連付けられた接続オブジェクトは、有効なものでなければなりませんが、開いている必要はありません。FillSchema を呼び出す前に接続が閉じていた場合は、接続が開かれ、データを取得した後で再び閉じられます。FillSchema を呼び出す前に接続が開いていた場合は、接続は開いたままになります。
FillSchema は、指定された DataSet に DataTable を追加します。次に、DataTable の DataColumnCollection に列を追加します。データ ソースに次の DataColumn プロパティが存在する場合は、それを設定します。
また、FillSchema は、次の規則に従って、PrimaryKey プロパティと Constraints プロパティも設定します。
-
SelectCommand によって 1 つ以上の主キー列が返された場合は、それを DataTable の主キー列として使用します。
-
主キー列が返されず、一意の列が返された場合、それらの列すべてが null 値を許容しないときに限り、一意の列を主キーとして使用します。いずれかの列が null 値を許容するときは、ConstraintCollection に UniqueConstraint を追加します。PrimaryKey プロパティは設定しません。
主キーおよび UNIQUE 制約は上記の規則に従って ConstraintCollection に追加されますが、その他の種類の制約は追加されないことに注意してください。
DataTable へのデータの格納中に重複する列が見つかった場合、2 番目以降の列には、IDataAdapter によって、"columnname1"、"columnname2"、"columnname3" のような形式で名前が生成されます。受信したデータに無名の列が含まれていた場合は、Column1、Column2 のような形式の名前で DataSet に列が格納されます。DataSet に複数結果セットを追加するときは、各結果セットが個別のテーブルに格納されます。2 番目以降の結果セットには、指定されたテーブル名に整数値を追加した名前が付けられます。たとえば、Table、Table1、Table2 のようになります。アプリケーションで列名およびテーブル名を使用するときは、これらの名前付けパターンとの衝突が発生しないように注意する必要があります。
FillSchema は行を返しません。DataTable に行を追加するには、Fill メソッドを使用します。
![]() |
---|
複数の結果を返すバッチ SQL ステートメントを処理する場合、.NET Framework OLE DB 用データ プロバイダの FillSchema の実装では、最初の結果のスキーマ情報だけが取得されます。複数の結果のスキーマ情報を取得するには、MissingSchemaAction を AddWithKey に設定して Fill を使用します。 |
FillSchema を使用する場合、.NET Framework SQL Server 用データ プロバイダは、実行するステートメントに FOR BROWSE 句を追加します。SET FMTONLY ON ステートメントの使用による干渉などの副作用に注意してください。詳細については、SQL Server Books Online を参照してください。
実装時の注意 FillSchema メソッドのこの実装はプロテクトされており、.NET Framework データ プロバイダでの使用を想定しています。
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DbDataAdapter.FillSchema メソッド (DataSet, SchemaType, String)
アセンブリ: System.Data (system.data.dll 内)

Public Function FillSchema ( _ dataSet As DataSet, _ schemaType As SchemaType, _ srcTable As String _ ) As DataTable()
Dim instance As DbDataAdapter Dim dataSet As DataSet Dim schemaType As SchemaType Dim srcTable As String Dim returnValue As DataTable() returnValue = instance.FillSchema(dataSet, schemaType, srcTable)
public DataTable[] FillSchema ( DataSet dataSet, SchemaType schemaType, string srcTable )
public: array<DataTable^>^ FillSchema ( DataSet^ dataSet, SchemaType schemaType, String^ srcTable )
public DataTable[] FillSchema ( DataSet dataSet, SchemaType schemaType, String srcTable )
public function FillSchema ( dataSet : DataSet, schemaType : SchemaType, srcTable : String ) : DataTable[]
戻り値
DataSet に追加された DataTable オブジェクトのコレクションへの参照。


このメソッドは、SelectCommand を使用して、データ ソースからスキーマ情報を取得します。
FillSchema は、指定された DataSet に DataTable を追加します。次に、DataTable の DataColumnCollection に列を追加します。データ ソースに次の DataColumn プロパティが存在する場合は、それを設定します。
また、FillSchema は、次の規則に従って、PrimaryKey プロパティと Constraints プロパティも設定します。
-
SelectCommand によって 1 つ以上の主キー列が返された場合は、それを DataTable の主キー列として使用します。
-
主キー列が返されず、一意の列が返された場合、それらの列すべてが null 値を許容しないときに限り、一意の列を主キーとして使用します。いずれかの列が null 値を許容するときは、ConstraintCollection に UniqueConstraint を追加します。PrimaryKey プロパティは設定しません。
主キーおよび UNIQUE 制約は上記の規則に従って ConstraintCollection に追加されますが、その他の種類の制約は追加されないことに注意してください。
主キー情報は、Fill の実行時に、キー列が一致する行を検索および置換するために使用されます。この動作が不要な場合は、スキーマ情報を要求せずに Fill を使用してください。
DataTable へのデータの格納中に重複する列が見つかった場合、2 番目以降の列には、DbDataAdapter によって、"columnname1"、"columnname2"、"columnname3" のような形式で名前が生成されます。受信したデータに無名の列が含まれていた場合は、Column1、Column2 のような形式の名前で DataSet に列が格納されます。DataSet に複数結果セットを追加するときは、各結果セットが個別のテーブルに格納されます。2 番目以降の結果セットには、指定されたテーブル名に整数値を追加した名前が付けられます。たとえば、Table、Table1、Table2 のようになります。アプリケーションで列名およびテーブル名を使用するときは、これらの名前付けパターンとの衝突が発生しないように注意する必要があります。
FillSchema メソッドは、大文字と小文字の違いを除いて名前が一致する DataTable オブジェクトが DataSet 内に複数含まれる場合に、それらを区別します。この場合、FillSchema は、大文字と小文字を区別して比較を実行し、対応するテーブルを見つけます。正確に一致するテーブルが存在しない場合は、新しく作成します。この動作を表す C# コードの例を次に示します。
DataSet dataset = new DataSet(); dataset.Tables.Add("aaa"); dataset.Tables.Add("AAA"); adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet. adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".
FillSchema を呼び出したときに、大文字と小文字の違いを除いて名前が一致する DataTable が DataSet 内に 1 つだけ含まれている場合は、その DataTable が更新されます。この場合は、比較のときに大文字と小文字が区別されません。この動作を表す C# コードの例を次に示します。
DataSet dataset = new DataSet(); dataset.Tables.Add("aaa"); adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.
SELECT コマンドに関連付けられた IDbConnection オブジェクトは、有効なものである必要がありますが、開いている必要はありません。FillSchema を呼び出す前に IDbConnection が閉じていた場合は、接続が開かれ、データを取得した後で再び閉じられます。FillSchema を呼び出す前に接続を開いていた場合は、接続は開いたままになります。
![]() |
---|
複数の結果を返すバッチ SQL ステートメントを処理する場合、.NET Framework OLE DB 用データ プロバイダの FillSchema の実装では、最初の結果のスキーマ情報だけが取得されます。複数の結果のスキーマ情報を取得するには、MissingSchemaAction を AddWithKey に設定して Fill を使用します。 |
FillSchema を使用する場合、.NET Framework SQL Server 用データ プロバイダは、実行するステートメントに FOR BROWSE 句を追加します。SET FMTONLY ON ステートメントの使用による干渉などの副作用に注意してください。詳細については、SQL Server Books Online を参照してください。

SqlDataAdapter 派生クラスを使用して、DataSet にスキーマを格納し、DataSet を返す例を次に示します。
Private Function GetCustomerData(ByVal dataSetName As String, _ ByVal connectionString As String) As DataSet Dim dataSet As DataSet = New DataSet(dataSetName) Using connection As SqlConnection = New SqlConnection(connectionString) Dim adapter As SqlDataAdapter = New SqlDataAdapter( _ "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _ connection) Dim mapping As DataTableMapping = adapter.TableMappings.Add( _ "Table", "Customers") mapping.ColumnMappings.Add("CompanyName", "Name") mapping.ColumnMappings.Add("ContactName", "Contact") connection.Open() adapter.FillSchema(dataSet, SchemaType.Source, "Customers") adapter.Fill(dataSet) Return dataSet End Using End Function
public static DataSet GetCustomerData(string dataSetName, string connectionString) { DataSet dataSet = new DataSet(dataSetName); using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter( "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection); DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers"); mapping.ColumnMappings.Add("CompanyName", "Name"); mapping.ColumnMappings.Add("ContactName", "Contact"); connection.Open(); adapter.FillSchema(dataSet, SchemaType.Source, "Customers"); adapter.Fill(dataSet); return dataSet; } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DbDataAdapter.FillSchema メソッド (DataTable, SchemaType)
アセンブリ: System.Data (system.data.dll 内)

Public Function FillSchema ( _ dataTable As DataTable, _ schemaType As SchemaType _ ) As DataTable
Dim instance As DbDataAdapter Dim dataTable As DataTable Dim schemaType As SchemaType Dim returnValue As DataTable returnValue = instance.FillSchema(dataTable, schemaType)
public DataTable FillSchema ( DataTable dataTable, SchemaType schemaType )
public: DataTable^ FillSchema ( DataTable^ dataTable, SchemaType schemaType )
public DataTable FillSchema ( DataTable dataTable, SchemaType schemaType )
public function FillSchema ( dataTable : DataTable, schemaType : SchemaType ) : DataTable
戻り値
データ ソースから返されたスキーマ情報が格納された DataTable。

FillSchema メソッドは、SelectCommand を使用して、データ ソースからスキーマを取得します。SelectCommand に関連付けられた接続オブジェクトは、有効なものでなければなりませんが、開いている必要はありません。FillSchema を呼び出す前に接続が閉じていた場合は、接続が開かれ、データを取得した後で再び閉じられます。FillSchema を呼び出す前に接続が開いていた場合は、接続は開いたままになります。
FillSchema は、DataTable を返します。次に、DataTable の DataColumnCollection に列を追加します。データ ソースに次の DataColumn プロパティが存在する場合は、それを設定します。
また、FillSchema は、次の規則に従って、PrimaryKey プロパティと Constraints プロパティも設定します。
-
DataTable の PrimaryKey が既に定義されているか、または DataTable にデータが格納されている場合は、PrimaryKey プロパティを設定しません。
-
SelectCommand によって 1 つ以上の主キー列が返された場合は、それを DataTable の主キー列として使用します。
-
主キー列が返されず、一意の列が返された場合、それらの列すべてが null 値を許容しないときに限り、一意の列を主キーとして使用します。いずれかの列が null 値を許容するときは、ConstraintCollection に UniqueConstraint を追加します。PrimaryKey プロパティは設定しません。
主キーおよび UNIQUE 制約は上記の規則に従って ConstraintCollection に追加されますが、その他の種類の制約は追加されないことに注意してください。この処理では、サーバーに対する複数のラウンドトリップが必要になる場合があります。
DataTable へのデータの格納中に重複する列が見つかった場合、2 番目以降の列には、DbDataAdapter によって、"columnname1"、"columnname2"、"columnname3" のような形式で名前が生成されます。受信したデータに無名の列が含まれていた場合は、Column1、Column2 のような形式の名前で DataSet に列が格納されます。DataSet に複数結果セットを追加するときは、各結果セットが個別のテーブルに格納されます。2 番目以降の結果セットには、指定されたテーブル名に整数値を追加した名前が付けられます。たとえば、Table、Table1、Table2 のようになります。アプリケーションで列名およびテーブル名を使用するときは、これらの名前付けパターンとの衝突が発生しないように注意する必要があります。
FillSchema は行を返しません。DataTable に行を追加するには、Fill メソッドを使用します。
![]() |
---|
複数の結果を返すバッチ SQL ステートメントを処理する場合、.NET Framework OLE DB 用データ プロバイダの FillSchema の実装では、最初の結果のスキーマ情報だけが取得されます。複数の結果のスキーマ情報を取得するには、MissingSchemaAction を AddWithKey に設定して Fill を使用します。 |
FillSchema を使用する場合、.NET Framework SQL Server 用データ プロバイダは、実行するステートメントに FOR BROWSE 句を追加します。SET FMTONLY ON ステートメントの使用による干渉などの副作用に注意してください。詳細については、SQL Server Books Online を参照してください。

SqlDataAdapter 派生クラスを使用して、DataSet にスキーマを格納し、DataTable を返す例を次に示します。
Private Function GetCustomerData(ByVal dataTableName As String, _ ByVal connectionString As String) As DataTable Dim table As DataTable = New DataTable(dataTableName) Using connection As SqlConnection = New SqlConnection(connectionString) Dim adapter As SqlDataAdapter = New SqlDataAdapter( _ "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _ connection) Dim mapping As DataTableMapping = adapter.TableMappings.Add( _ "Table", "Customers") mapping.ColumnMappings.Add("CompanyName", "Name") mapping.ColumnMappings.Add("ContactName", "Contact") connection.Open() adapter.FillSchema(table, SchemaType.Mapped) adapter.Fill(table) Return table End Using End Function
public static DataTable GetCustomerData(string dataSetName, string connectionString) { DataTable table = new DataTable(dataSetName); using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter( "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection); DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers"); mapping.ColumnMappings.Add("CompanyName", "Name"); mapping.ColumnMappings.Add("ContactName", "Contact"); connection.Open(); adapter.FillSchema(table, SchemaType.Mapped); adapter.Fill(table); return table; } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DbDataAdapter.FillSchema メソッド (DataSet, SchemaType)
アセンブリ: System.Data (system.data.dll 内)

Public Overrides Function FillSchema ( _ dataSet As DataSet, _ schemaType As SchemaType _ ) As DataTable()
Dim instance As DbDataAdapter Dim dataSet As DataSet Dim schemaType As SchemaType Dim returnValue As DataTable() returnValue = instance.FillSchema(dataSet, schemaType)
public override DataTable[] FillSchema ( DataSet dataSet, SchemaType schemaType )
public: virtual array<DataTable^>^ FillSchema ( DataSet^ dataSet, SchemaType schemaType ) override
public DataTable[] FillSchema ( DataSet dataSet, SchemaType schemaType )
public override function FillSchema ( dataSet : DataSet, schemaType : SchemaType ) : DataTable[]
戻り値
DataSet に追加された DataTable オブジェクトのコレクションへの参照。

このメソッドは、SelectCommand を使用して、データ ソースからスキーマ情報を取得します。
FillSchema は、指定された DataSet に DataTable を追加します。次に、DataTable の DataColumnCollection に列を追加します。データ ソースに次の DataColumn プロパティが存在する場合は、それを設定します。
また、FillSchema は、次の規則に従って、PrimaryKey プロパティと Constraints プロパティも設定します。
-
SelectCommand によって 1 つ以上の主キー列が返された場合は、それを DataTable の主キー列として使用します。
-
主キー列が返されず、一意の列が返された場合、それらの列すべてが null 値を許容しないときに限り、一意の列を主キーとして使用します。いずれかの列が null 値を許容するときは、ConstraintCollection に UniqueConstraint を追加します。PrimaryKey プロパティは設定しません。
主キーおよび UNIQUE 制約は上記の規則に従って ConstraintCollection に追加されますが、その他の種類の制約は追加されないことに注意してください。
主キー情報は、Fill の実行時に、キー列が一致する行を検索および置換するために使用されます。この動作が不要な場合は、スキーマ情報を要求せずに Fill を使用してください。
DataTable へのデータの格納中に重複する列が見つかった場合、2 番目以降の列には、IDataAdapter によって、"columnname1"、"columnname2"、"columnname3" のような形式で名前が生成されます。受信したデータに無名の列が含まれていた場合は、Column1、Column2 のような形式の名前で DataSet に列が格納されます。DataSet に複数結果セットを追加するときは、各結果セットが個別のテーブルに格納されます。2 番目以降の結果セットには、指定されたテーブル名に整数値を追加した名前が付けられます。たとえば、Table、Table1、Table2 のようになります。アプリケーションで列名およびテーブル名を使用するときは、これらの名前付けパターンとの衝突が発生しないように注意する必要があります。
SELECT コマンドに関連付けられた IDbConnection オブジェクトは、有効なものである必要がありますが、開いている必要はありません。FillSchema を呼び出す前に IDbConnection が閉じていた場合は、接続が開かれ、データを取得した後で再び閉じられます。FillSchema を呼び出す前に接続を開いていた場合は、接続は開いたままになります。
![]() |
---|
複数の結果を返すバッチ SQL ステートメントを処理する場合、.NET Framework OLE DB 用データ プロバイダの FillSchema の実装では、最初の結果のスキーマ情報だけが取得されます。複数の結果のスキーマ情報を取得するには、MissingSchemaAction を AddWithKey に設定して Fill を使用します。 |
FillSchema を使用する場合、.NET Framework SQL Server 用データ プロバイダは、実行するステートメントに FOR BROWSE 句を追加します。SET FMTONLY ON ステートメントの使用による干渉などの副作用に注意してください。詳細については、SQL Server Books Online を参照してください。

SqlDataAdapter 派生クラスを使用して、DataSet にスキーマを格納し、DataSet を返す例を次に示します。
Private Function GetCustomerData(ByVal dataSetName As String, _ ByVal connectionString As String) As DataSet Dim dataSet As DataSet = New DataSet(dataSetName) Using connection As SqlConnection = New SqlConnection(connectionString) Dim adapter As SqlDataAdapter = New SqlDataAdapter( _ "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _ connection) Dim mapping As DataTableMapping = adapter.TableMappings.Add( _ "Table", "Customers") mapping.ColumnMappings.Add("CompanyName", "Name") mapping.ColumnMappings.Add("ContactName", "Contact") connection.Open() adapter.FillSchema(dataSet, SchemaType.Mapped) adapter.Fill(dataSet) Return dataSet End Using End Function
public static DataSet GetCustomerData(string dataSetName, string connectionString) { DataSet dataSet = new DataSet(dataSetName); using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter( "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection); DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers"); mapping.ColumnMappings.Add("CompanyName", "Name"); mapping.ColumnMappings.Add("ContactName", "Contact"); connection.Open(); adapter.FillSchema(dataSet, SchemaType.Mapped); adapter.Fill(dataSet); return dataSet; } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DbDataAdapter.FillSchema メソッド

名前 | 説明 |
---|---|
DbDataAdapter.FillSchema (DataSet, SchemaType) | 指定された DataSet に Table という名前の DataTable を追加し、指定された SchemaType に基づいて、データ ソース内のスキーマと一致するようにスキーマを設定します。 .NET Compact Framework によってサポートされています。 |
DbDataAdapter.FillSchema (DataTable, SchemaType) | 指定した SchemaType に基いて、指定した DataTable のスキーマを設定します。 .NET Compact Framework によってサポートされています。 |
DbDataAdapter.FillSchema (DataSet, SchemaType, String) | 指定した DataSet に DataTable を追加し、指定した SchemaType および DataTable に基づいて、データ ソース内のスキーマと一致するようにスキーマを設定します。 .NET Compact Framework によってサポートされています。 |
DbDataAdapter.FillSchema (DataTable, SchemaType, IDataReader) | DataTable を指定した DataSet に追加します。 |
DbDataAdapter.FillSchema (DataSet, SchemaType, String, IDataReader) | DataTable を指定した DataSet に追加します。 |
DbDataAdapter.FillSchema (DataTable, SchemaType, IDbCommand, CommandBehavior) | 指定した SchemaType、コマンド文字列、および CommandBehavior 値に基づいて、指定した DataTable のスキーマを設定します。 .NET Compact Framework によってサポートされています。 |
DbDataAdapter.FillSchema (DataSet, SchemaType, IDbCommand, String, CommandBehavior) | 指定した DataSet に DataTable を追加し、指定した SchemaType に基づいて、データ ソース内のスキーマと一致するようにスキーマを設定します。 .NET Compact Framework によってサポートされています。 |

DbDataAdapter.FillSchema メソッド (DataSet, SchemaType, IDbCommand, String, CommandBehavior)
アセンブリ: System.Data (system.data.dll 内)

Protected Overridable Function FillSchema ( _ dataSet As DataSet, _ schemaType As SchemaType, _ command As IDbCommand, _ srcTable As String, _ behavior As CommandBehavior _ ) As DataTable()
Dim dataSet As DataSet Dim schemaType As SchemaType Dim command As IDbCommand Dim srcTable As String Dim behavior As CommandBehavior Dim returnValue As DataTable() returnValue = Me.FillSchema(dataSet, schemaType, command, srcTable, behavior)
protected virtual DataTable[] FillSchema ( DataSet dataSet, SchemaType schemaType, IDbCommand command, string srcTable, CommandBehavior behavior )
protected: virtual array<DataTable^>^ FillSchema ( DataSet^ dataSet, SchemaType schemaType, IDbCommand^ command, String^ srcTable, CommandBehavior behavior )
protected DataTable[] FillSchema ( DataSet dataSet, SchemaType schemaType, IDbCommand command, String srcTable, CommandBehavior behavior )
protected function FillSchema ( dataSet : DataSet, schemaType : SchemaType, command : IDbCommand, srcTable : String, behavior : CommandBehavior ) : DataTable[]
戻り値
データ ソースから返されたスキーマ情報が格納された、DataTable オブジェクトの配列。

FillSchema メソッドは、SelectCommand を使用して、データ ソースからスキーマを取得します。SelectCommand に関連付けられた接続オブジェクトは、有効なものでなければなりませんが、開いている必要はありません。FillSchema を呼び出す前に接続が閉じていた場合は、接続が開かれ、データを取得した後で再び閉じられます。FillSchema を呼び出す前に接続が開いていた場合は、接続は開いたままになります。
FillSchema は、指定された DataSet に DataTable を追加します。次に、DataTable の DataColumnCollection に列を追加します。データ ソースに次の DataColumn プロパティが存在する場合は、それを設定します。
また、FillSchema は、次の規則に従って、PrimaryKey プロパティと Constraints プロパティも設定します。
-
SelectCommand によって 1 つ以上の主キー列が返された場合は、それを DataTable の主キー列として使用します。
-
主キー列が返されず、一意の列が返された場合、それらの列すべてが null 値を許容しないときに限り、一意の列を主キーとして使用します。いずれかの列が null 値を許容するときは、ConstraintCollection に UniqueConstraint を追加します。PrimaryKey プロパティは設定しません。
主キーおよび UNIQUE 制約は上記の規則に従って ConstraintCollection に追加されますが、その他の種類の制約は追加されないことに注意してください。
DataTable へのデータの格納中に重複する列が見つかった場合、2 番目以降の列には、IDataAdapter によって、"columnname1"、"columnname2"、"columnname3" のような形式で名前が生成されます。受信したデータに無名の列が含まれていた場合は、Column1、Column2 のような形式の名前で DataSet に列が格納されます。DataSet に複数結果セットを追加するときは、各結果セットが個別のテーブルに格納されます。2 番目以降の結果セットには、指定されたテーブル名に整数値を追加した名前が付けられます。たとえば、Table、Table1、Table2 のようになります。アプリケーションで列名およびテーブル名を使用するときは、これらの名前付けパターンとの衝突が発生しないように注意する必要があります。
FillSchema メソッドは、大文字と小文字の違いを除いて名前が一致する DataTable オブジェクトが DataSet 内に複数含まれる場合に、それらを区別します。この場合、FillSchema は、大文字と小文字を区別して比較を実行し、対応するテーブルを見つけます。正確に一致するテーブルが存在しない場合は、新しく作成します。この動作を表す C# コードの例を次に示します。
DataSet dataset = new DataSet(); dataset.Tables.Add("aaa"); dataset.Tables.Add("AAA"); adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet. adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".
FillSchema を呼び出したときに、大文字と小文字の違いを除いて名前が一致する DataTable が DataSet 内に 1 つだけ含まれている場合は、その DataTable が更新されます。この場合は、比較のときに大文字と小文字が区別されません。この動作を表す C# コードの例を次に示します。
DataSet dataset = new DataSet(); dataset.Tables.Add("aaa"); adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.
FillSchema は行を返しません。DataTable に行を追加するには、Fill メソッドを使用します。
![]() |
---|
複数の結果を返すバッチ SQL ステートメントを処理する場合、.NET Framework OLE DB 用データ プロバイダの FillSchema の実装では、最初の結果のスキーマ情報だけが取得されます。複数の結果のスキーマ情報を取得するには、MissingSchemaAction を AddWithKey に設定して Fill を使用します。 |
FillSchema を使用する場合、.NET Framework SQL Server 用データ プロバイダは、実行するステートメントに FOR BROWSE 句を追加します。SET FMTONLY ON ステートメントの使用による干渉などの副作用に注意してください。詳細については、SQL Server Books Online を参照してください。
実装時の注意 FillSchema メソッドのこの実装はプロテクトされており、.NET Framework データ プロバイダでの使用を想定しています。
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からDbDataAdapter.FillSchemaを検索する場合は、下記のリンクをクリックしてください。

- DbDataAdapter.FillSchemaのページへのリンク