DbDataAdapter.FillSchema Methode

Definitie

Hiermee voegt u een DataTable aan een DataSet toe en configureert u het schema zodat dit overeenkomt met dat in de gegevensbron.

Overloads

Name Description
FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

Voegt een DataTable toe aan de opgegeven DataSet en configureert het schema zodat het overeenkomt met dat in de gegevensbron op basis van de opgegeven SchemaType.

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Hiermee configureert u het schema van de opgegeven op basis van de opgegeven DataTableSchemaTypeopdrachtreeks en CommandBehavior waarden.

FillSchema(DataSet, SchemaType, String)

Voegt een DataTable toe aan de opgegeven DataSet en configureert het schema zodat het overeenkomt met dat in de gegevensbron op basis van de opgegeven SchemaType en DataTable.

FillSchema(DataTable, SchemaType)

Hiermee configureert u het schema van de opgegeven DataTable op basis van de opgegeven SchemaType.

FillSchema(DataSet, SchemaType)

Voegt een DataTable benoemde tabel toe aan de opgegeven DataSet en configureert het schema zodat het overeenkomt met het schema in de gegevensbron op basis van de opgegeven SchemaType.

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs

Voegt een DataTable toe aan de opgegeven DataSet en configureert het schema zodat het overeenkomt met dat in de gegevensbron op basis van de opgegeven SchemaType.

protected:
 virtual cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::String ^ srcTable, System::Data::CommandBehavior behavior);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")]
protected virtual System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, string srcTable, System.Data.CommandBehavior behavior);
protected virtual System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, string srcTable, System.Data.CommandBehavior behavior);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]
Protected Overridable Function FillSchema (dataSet As DataSet, schemaType As SchemaType, command As IDbCommand, srcTable As String, behavior As CommandBehavior) As DataTable()

Parameters

dataSet
DataSet

Het DataSet schema dat moet worden gevuld met het schema uit de gegevensbron.

schemaType
SchemaType

Een van de SchemaType waarden.

command
IDbCommand

De SQL SELECT-instructie die wordt gebruikt om rijen op te halen uit de gegevensbron.

srcTable
String

De naam van de brontabel die moet worden gebruikt voor tabeltoewijzing.

behavior
CommandBehavior

Een van de CommandBehavior waarden.

Retouren

Een matrix met DataTable objecten die schemagegevens bevatten die worden geretourneerd door de gegevensbron.

Kenmerken

Opmerkingen

De FillSchema methode haalt het schema op uit de gegevensbron met behulp van de SelectCommand. Het verbindingsobject dat aan het SelectCommand object is gekoppeld, moet geldig zijn, maar hoeft niet geopend te zijn. Als de verbinding wordt gesloten voordat FillSchema deze wordt aangeroepen, wordt deze geopend om gegevens op te halen en vervolgens gesloten. Als de verbinding is geopend voordat FillSchema deze wordt aangeroepen, blijft deze geopend.

Met een FillSchema bewerking wordt een DataTable aan het doel DataSettoegevoegd. Vervolgens worden kolommen toegevoegd aan de DataColumnCollectionDataTableen configureert u de volgende DataColumn eigenschappen als deze aanwezig zijn in de gegevensbron:

FillSchema configureert ook de PrimaryKey en Constraints eigenschappen volgens de volgende regels:

  • Als een of meer primaire-sleutelkolommen door de SelectCommandkolom worden geretourneerd, worden ze gebruikt als de primaire-sleutelkolommen voor de DataTable.

  • Als er geen primaire-sleutelkolommen worden geretourneerd, maar unieke kolommen zijn, worden de unieke kolommen gebruikt als primaire sleutel als en alleen als alle unieke kolommen niet kunnen worden ingetrokken. Als een van de kolommen nullable is, wordt er een UniqueConstraint toegevoegd aan de ConstraintCollection, maar de PrimaryKey eigenschap is niet ingesteld.

  • Als zowel primaire-sleutelkolommen als unieke kolommen worden geretourneerd, worden de primaire-sleutelkolommen gebruikt als de primaire-sleutelkolommen voor de DataTable.

Houd er rekening mee dat primaire sleutels en unieke beperkingen worden toegevoegd aan de ConstraintCollection regels volgens de voorgaande regels, maar andere beperkingstypen worden niet toegevoegd.

Als een unieke geclusterde index is gedefinieerd voor een kolom of kolommen in een SQL Server tabel en de primaire-sleutelbeperking is gedefinieerd voor een afzonderlijke set kolommen, worden de namen van de kolommen in de geclusterde index geretourneerd. Als u de naam of namen van de primaire-sleutelkolommen wilt retourneren, gebruikt u een queryhint met de SELECT-instructie waarmee de naam van de primaire-sleutelindex wordt opgegeven. Zie Hints (Transact-SQL) - Query voor meer informatie over het opgeven van queryhints.

Als er IDataAdapter dubbele kolommen optreden tijdens het vullen van een DataTablekolom, worden er namen gegenereerd voor de volgende kolommen, met behulp van het patroon 'columnname1', 'columnname2', 'columnname3', enzovoort. Als de binnenkomende gegevens niet-benoemde kolommen bevatten, worden ze in het DataSet patroon Kolom1, Kolom2 enzovoort geplaatst. Wanneer er meerdere resultatensets worden toegevoegd aan de DataSet resultatenset, wordt deze in een afzonderlijke tabel geplaatst. Aanvullende resultatensets worden benoemd door integrale waarden toe te voegen aan de opgegeven tabelnaam (bijvoorbeeld 'Tabel', 'Tabel1', 'Tabel2', enzovoort). Als uw app kolom- en tabelnamen gebruikt, moet u ervoor zorgen dat er geen conflicten zijn met deze naamgevingspatronen.

De FillSchema methode ondersteunt scenario's waarin het meerdere DataSet objecten bevat waarvan de DataTable namen alleen per geval verschillen. In dergelijke situaties FillSchema voert u een hoofdlettergevoelige vergelijking uit om de bijbehorende tabel te vinden en maakt u een nieuwe tabel als er geen exacte overeenkomst bestaat. De volgende C#-code illustreert dit gedrag.

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".

Als FillSchema wordt aangeroepen en de naam slechts één DataSet bevat waarvan de DataTable naam alleen per geval verschilt, wordt dat DataTable bijgewerkt. In dit scenario is de vergelijking niet hoofdlettergevoelig. De volgende C#-code illustreert dit gedrag.

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 retourneert geen rijen. Gebruik de Fill methode om rijen toe te voegen aan een DataTable.

Note

Bij het verwerken van batch-SQL-instructies die meerdere resultaten retourneren, haalt de implementatie van FillSchema voor het .NET Framework-Data Provider voor OLE DB alleen schemagegevens op voor het eerste resultaat. Als u schemagegevens voor meerdere resultaten wilt ophalen, gebruikt Fill u deze met de MissingSchemaAction set op AddWithKey.

Wanneer u FillSchema gebruikt, voegt de .NET Framework-Data Provider voor SQL Server een FOR BROWSE-component toe aan de instructie die wordt uitgevoerd. De gebruiker moet zich bewust zijn van mogelijke bijwerkingen, zoals interferentie met het gebruik van SET FMTONLY ON-instructies. Zie SET FMTONLY (Transact-SQL)voor meer informatie.

Notities voor overnemers

Deze implementatie van de methode FillSchema(DataSet, SchemaType) is beveiligd en is ontworpen voor gebruik door een .NET Framework-gegevensprovider.

Zie ook

Van toepassing op

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs

Hiermee configureert u het schema van de opgegeven op basis van de opgegeven DataTableSchemaTypeopdrachtreeks en CommandBehavior waarden.

protected:
 virtual System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")]
protected virtual System.Data.DataTable? FillSchema(System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
protected virtual System.Data.DataTable? FillSchema(System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
protected virtual System.Data.DataTable FillSchema(System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable
Protected Overridable Function FillSchema (dataTable As DataTable, schemaType As SchemaType, command As IDbCommand, behavior As CommandBehavior) As DataTable

Parameters

dataTable
DataTable

Het DataTable schema dat moet worden gevuld met het schema uit de gegevensbron.

schemaType
SchemaType

Een van de SchemaType waarden.

command
IDbCommand

De SQL SELECT-instructie die wordt gebruikt om rijen op te halen uit de gegevensbron.

behavior
CommandBehavior

Een van de CommandBehavior waarden.

Retouren

Een object DataTable dat schemagegevens bevat die worden geretourneerd uit de gegevensbron.

Kenmerken

Opmerkingen

De FillSchema methode haalt het schema op uit de gegevensbron met behulp van de SelectCommand. Het verbindingsobject dat aan het SelectCommand object is gekoppeld, moet geldig zijn, maar hoeft niet geopend te zijn. Als de verbinding wordt gesloten voordat FillSchema deze wordt aangeroepen, wordt deze geopend om gegevens op te halen en vervolgens gesloten. Als de verbinding is geopend voordat FillSchema deze wordt aangeroepen, blijft deze geopend.

Met een FillSchema bewerking wordt een DataTable aan het doel DataSettoegevoegd. Vervolgens worden kolommen toegevoegd aan de DataColumnCollectionDataTableen configureert u de volgende DataColumn eigenschappen als deze aanwezig zijn in de gegevensbron:

FillSchema configureert ook de PrimaryKey en Constraints eigenschappen volgens de volgende regels:

  • Als een of meer primaire-sleutelkolommen door de SelectCommandkolom worden geretourneerd, worden ze gebruikt als de primaire-sleutelkolommen voor de DataTable.

  • Als er geen primaire-sleutelkolommen worden geretourneerd, maar unieke kolommen zijn, worden de unieke kolommen gebruikt als primaire sleutel als en alleen als alle unieke kolommen niet kunnen worden ingetrokken. Als een van de kolommen nullable is, wordt er een UniqueConstraint toegevoegd aan de ConstraintCollection, maar de PrimaryKey eigenschap is niet ingesteld.

  • Als zowel primaire-sleutelkolommen als unieke kolommen worden geretourneerd, worden de primaire-sleutelkolommen gebruikt als de primaire-sleutelkolommen voor de DataTable.

Houd er rekening mee dat primaire sleutels en unieke beperkingen worden toegevoegd aan de ConstraintCollection regels volgens de voorgaande regels, maar andere beperkingstypen worden niet toegevoegd.

Als een unieke geclusterde index is gedefinieerd voor een kolom of kolommen in een SQL Server tabel en de primaire-sleutelbeperking is gedefinieerd voor een afzonderlijke set kolommen, worden de namen van de kolommen in de geclusterde index geretourneerd. Als u de naam of namen van de primaire-sleutelkolommen wilt retourneren, gebruikt u een queryhint met de SELECT-instructie waarmee de naam van de primaire-sleutelindex wordt opgegeven. Zie Hints (Transact-SQL) - Query voor meer informatie over het opgeven van queryhints.

Als er IDataAdapter dubbele kolommen optreden tijdens het vullen van een DataTablekolom, worden er namen gegenereerd voor de volgende kolommen, met behulp van het patroon 'columnname1', 'columnname2', 'columnname3', enzovoort. Als de binnenkomende gegevens niet-benoemde kolommen bevatten, worden ze in het DataSet patroon Kolom1, Kolom2 enzovoort geplaatst. Wanneer er meerdere resultatensets worden toegevoegd aan de DataSet resultatenset, wordt deze in een afzonderlijke tabel geplaatst. Aanvullende resultatensets worden benoemd door integrale waarden toe te voegen aan de opgegeven tabelnaam (bijvoorbeeld 'Tabel', 'Tabel1', 'Tabel2', enzovoort). Als uw app kolom- en tabelnamen gebruikt, moet u ervoor zorgen dat er geen conflicten zijn met deze naamgevingspatronen.

FillSchema retourneert geen rijen. Gebruik de Fill methode om rijen toe te voegen aan een DataTable.

Note

Bij het verwerken van batch-SQL-instructies die meerdere resultaten retourneren, haalt de implementatie van FillSchema voor het .NET Framework-Data Provider voor OLE DB alleen schemagegevens op voor het eerste resultaat. Als u schemagegevens voor meerdere resultaten wilt ophalen, gebruikt Fill u deze met de MissingSchemaAction set op AddWithKey.

Wanneer u FillSchema gebruikt, voegt de .NET Framework-Data Provider voor SQL Server een FOR BROWSE-component toe aan de instructie die wordt uitgevoerd. De gebruiker moet zich bewust zijn van mogelijke bijwerkingen, zoals interferentie met het gebruik van SET FMTONLY ON-instructies. Zie SET FMTONLY (Transact-SQL)voor meer informatie.

Notities voor overnemers

Deze implementatie van de methode FillSchema(DataSet, SchemaType) is beveiligd en is ontworpen voor gebruik door een .NET Framework-gegevensprovider.

Zie ook

Van toepassing op

FillSchema(DataSet, SchemaType, String)

Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs

Voegt een DataTable toe aan de opgegeven DataSet en configureert het schema zodat het overeenkomt met dat in de gegevensbron op basis van de opgegeven SchemaType en DataTable.

public:
 cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::String ^ srcTable);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
public System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]
Public Function FillSchema (dataSet As DataSet, schemaType As SchemaType, srcTable As String) As DataTable()

Parameters

dataSet
DataSet

Een DataSet om het schema in te voegen.

schemaType
SchemaType

Een van de SchemaType waarden die aangeven hoe het schema moet worden ingevoegd.

srcTable
String

De naam van de brontabel die moet worden gebruikt voor tabeltoewijzing.

Retouren

Een verwijzing naar een verzameling DataTable objecten die zijn toegevoegd aan de DataSet.

Kenmerken

Uitzonderingen

Er is geen brontabel gevonden waaruit het schema kan worden opgehaald.

Voorbeelden

In het volgende voorbeeld wordt de afgeleide klasse gebruikt, SqlDataAdapterom een DataSet schema te vullen en een DataSet.

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;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter As 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

Opmerkingen

Met deze methode worden de schemagegevens opgehaald uit de gegevensbron met behulp van de SelectCommand.

Met een FillSchema bewerking wordt een DataTable aan het doel DataSettoegevoegd. Vervolgens worden kolommen toegevoegd aan de DataColumnCollectionDataTableen configureert u de volgende DataColumn eigenschappen als deze aanwezig zijn in de gegevensbron:

FillSchema configureert ook de PrimaryKey en Constraints eigenschappen volgens de volgende regels:

  • Als een of meer primaire-sleutelkolommen door de SelectCommandkolom worden geretourneerd, worden ze gebruikt als de primaire-sleutelkolommen voor de DataTable.

  • Als er geen primaire-sleutelkolommen worden geretourneerd, maar unieke kolommen zijn, worden de unieke kolommen gebruikt als primaire sleutel als en alleen als alle unieke kolommen niet kunnen worden ingetrokken. Als een van de kolommen nullable is, wordt er een UniqueConstraint toegevoegd aan de ConstraintCollection, maar de PrimaryKey eigenschap is niet ingesteld.

  • Als zowel primaire-sleutelkolommen als unieke kolommen worden geretourneerd, worden de primaire-sleutelkolommen gebruikt als de primaire-sleutelkolommen voor de DataTable.

Houd er rekening mee dat primaire sleutels en unieke beperkingen worden toegevoegd aan de ConstraintCollection regels volgens de voorgaande regels, maar andere beperkingstypen worden niet toegevoegd.

Als een unieke geclusterde index is gedefinieerd voor een kolom of kolommen in een SQL Server tabel en de primaire-sleutelbeperking is gedefinieerd voor een afzonderlijke set kolommen, worden de namen van de kolommen in de geclusterde index geretourneerd. Als u de naam of namen van de primaire-sleutelkolommen wilt retourneren, gebruikt u een queryhint met de SELECT-instructie waarmee de naam van de primaire-sleutelindex wordt opgegeven. Zie Hints (Transact-SQL) - Query voor meer informatie over het opgeven van queryhints.

Primaire-sleutelgegevens worden gebruikt om Fill rijen te zoeken en te vervangen waarvan de sleutelkolommen overeenkomen. Als dit niet het gewenste gedrag is, gebruikt Fill u dit zonder schemagegevens aan te vragen.

Als er DbDataAdapter dubbele kolommen optreden tijdens het vullen van een DataTablekolom, worden er namen gegenereerd voor de volgende kolommen, met behulp van het patroon 'columnname1', 'columnname2', 'columnname3', enzovoort. Als de binnenkomende gegevens niet-benoemde kolommen bevatten, worden ze in het DataSet patroon Kolom1, Kolom2 enzovoort geplaatst. Wanneer er meerdere resultatensets worden toegevoegd aan de DataSet resultatenset, wordt deze in een afzonderlijke tabel geplaatst. Aanvullende resultatensets worden benoemd door integrale waarden toe te voegen aan de opgegeven tabelnaam (bijvoorbeeld 'Tabel', 'Tabel1', 'Tabel2', enzovoort). Als uw app kolom- en tabelnamen gebruikt, moet u ervoor zorgen dat er geen conflicten zijn met deze naamgevingspatronen.

De FillSchema methode ondersteunt scenario's waarin het meerdere DataSet objecten bevat waarvan de DataTable namen alleen per geval verschillen. In dergelijke situaties FillSchema voert u een hoofdlettergevoelige vergelijking uit om de bijbehorende tabel te vinden en maakt u een nieuwe tabel als er geen exacte overeenkomst bestaat. De volgende C#-code illustreert dit gedrag.

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".

Als FillSchema wordt aangeroepen en de naam slechts één DataSet bevat waarvan de DataTable naam alleen per geval verschilt, wordt dat DataTable bijgewerkt. In dit scenario is de vergelijking niet hoofdlettergevoelig. De volgende C#-code illustreert dit gedrag.

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.

Het IDbConnection object dat is gekoppeld aan de opdracht selecteren, moet geldig zijn, maar hoeft niet te worden geopend. Als de naam wordt gesloten voordat IDbConnection deze FillSchema wordt aangeroepen, wordt deze geopend om gegevens op te halen en vervolgens gesloten. Als de verbinding open is voordat FillSchema deze wordt aangeroepen, blijft deze open.

Note

Bij het verwerken van batch-SQL-instructies die meerdere resultaten retourneren, haalt de implementatie van FillSchema voor het .NET Framework-Data Provider voor OLE DB alleen schemagegevens op voor het eerste resultaat. Als u schemagegevens voor meerdere resultaten wilt ophalen, gebruikt Fill u deze met de MissingSchemaAction set op AddWithKey.

Wanneer u FillSchema gebruikt, voegt de .NET Framework-Data Provider voor SQL Server een FOR BROWSE-component toe aan de instructie die wordt uitgevoerd. De gebruiker moet zich bewust zijn van mogelijke bijwerkingen, zoals interferentie met het gebruik van SET FMTONLY ON-instructies. Zie SET FMTONLY (Transact-SQL)voor meer informatie.

Zie ook

Van toepassing op

FillSchema(DataTable, SchemaType)

Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs

Hiermee configureert u het schema van de opgegeven DataTable op basis van de opgegeven SchemaType.

public:
 System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public System.Data.DataTable? FillSchema(System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
public System.Data.DataTable? FillSchema(System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
public System.Data.DataTable FillSchema(System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
Public Function FillSchema (dataTable As DataTable, schemaType As SchemaType) As DataTable

Parameters

dataTable
DataTable

Het DataTable schema dat moet worden gevuld met het schema uit de gegevensbron.

schemaType
SchemaType

Een van de SchemaType waarden.

Retouren

Een DataTable met schemagegevens die worden geretourneerd door de gegevensbron.

Kenmerken

Voorbeelden

In het volgende voorbeeld wordt de afgeleide klasse gebruikt, SqlDataAdapterom een DataSet schema te vullen en een DataTable.

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;
    }
}
Private Function GetCustomerData(ByVal dataTableName As String, _
    ByVal connectionString As String) As DataTable

    Dim table As New DataTable(dataTableName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter 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

Opmerkingen

De FillSchema methode haalt het schema op uit de gegevensbron met behulp van de SelectCommand. Het verbindingsobject dat aan het SelectCommand object is gekoppeld, moet geldig zijn, maar hoeft niet geopend te zijn. Als de verbinding wordt gesloten voordat FillSchema deze wordt aangeroepen, wordt deze geopend om gegevens op te halen en vervolgens gesloten. Als de verbinding is geopend voordat FillSchema deze wordt aangeroepen, blijft deze geopend.

Een FillSchema bewerking retourneert een DataTable. Vervolgens worden kolommen toegevoegd aan de DataColumnCollectionDataTableen configureert u de volgende DataColumn eigenschappen als deze aanwezig zijn in de gegevensbron:

FillSchema configureert ook de PrimaryKey en Constraints eigenschappen volgens de volgende regels:

  • Als er al een PrimaryKey is gedefinieerd voor de DataTable, of de DataTable bevat gegevens, wordt de PrimaryKey eigenschap niet ingesteld.

  • Als een of meer primaire-sleutelkolommen door de SelectCommandkolom worden geretourneerd, worden ze gebruikt als de primaire-sleutelkolommen voor de DataTable.

  • Als er geen primaire-sleutelkolommen worden geretourneerd, maar unieke kolommen zijn, worden de unieke kolommen gebruikt als primaire sleutel als en alleen als alle unieke kolommen niet kunnen worden ingetrokken. Als een van de kolommen nullable is, wordt er een UniqueConstraint toegevoegd aan de ConstraintCollection, maar de PrimaryKey eigenschap is niet ingesteld.

  • Als zowel primaire-sleutelkolommen als unieke kolommen worden geretourneerd, worden de primaire-sleutelkolommen gebruikt als de primaire-sleutelkolommen voor de DataTable.

Houd er rekening mee dat primaire sleutels en unieke beperkingen worden toegevoegd aan de ConstraintCollection regels volgens de voorgaande regels, maar andere beperkingstypen worden niet toegevoegd. Dit proces kan verschillende retouren naar de server vereisen.

Als een unieke geclusterde index is gedefinieerd voor een kolom of kolommen in een SQL Server tabel en de primaire-sleutelbeperking is gedefinieerd voor een afzonderlijke set kolommen, worden de namen van de kolommen in de geclusterde index geretourneerd. Als u de naam of namen van de primaire-sleutelkolommen wilt retourneren, gebruikt u een queryhint met de SELECT-instructie waarmee de naam van de primaire-sleutelindex wordt opgegeven. Zie Hints (Transact-SQL) - Query voor meer informatie over het opgeven van queryhints.

Als er DbDataAdapter dubbele kolommen optreden tijdens het vullen van een DataTablekolom, worden er namen gegenereerd voor de volgende kolommen, met behulp van het patroon 'columnname1', 'columnname2', 'columnname3', enzovoort. Als de binnenkomende gegevens niet-benoemde kolommen bevatten, worden ze in het DataSet patroon Kolom1, Kolom2 enzovoort geplaatst. Wanneer er meerdere resultatensets worden toegevoegd aan de DataSet resultatenset, wordt deze in een afzonderlijke tabel geplaatst. Aanvullende resultatensets worden benoemd door integrale waarden toe te voegen aan de opgegeven tabelnaam (bijvoorbeeld 'Tabel', 'Tabel1', 'Tabel2', enzovoort). Als uw app kolom- en tabelnamen gebruikt, moet u ervoor zorgen dat er geen conflicten zijn met deze naamgevingspatronen.

FillSchema retourneert geen rijen. Gebruik de Fill methode om rijen toe te voegen aan een DataTable.

Note

Bij het verwerken van batch-SQL-instructies die meerdere resultaten retourneren, haalt de implementatie van FillSchema voor het .NET Framework-Data Provider voor OLE DB alleen schemagegevens op voor het eerste resultaat. Als u schemagegevens voor meerdere resultaten wilt ophalen, gebruikt Fill u deze met de MissingSchemaAction set op AddWithKey.

Wanneer u FillSchema gebruikt, voegt de .NET Framework-Data Provider voor SQL Server een FOR BROWSE-component toe aan de instructie die wordt uitgevoerd. De gebruiker moet zich bewust zijn van mogelijke bijwerkingen, zoals interferentie met het gebruik van SET FMTONLY ON-instructies. Zie SET FMTONLY (Transact-SQL)voor meer informatie.

Zie ook

Van toepassing op

FillSchema(DataSet, SchemaType)

Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs
Bron:
DbDataAdapter.cs

Voegt een DataTable benoemde tabel toe aan de opgegeven DataSet en configureert het schema zodat het overeenkomt met het schema in de gegevensbron op basis van de opgegeven SchemaType.

public:
 override cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public override System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType);
public override System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
Public Overrides Function FillSchema (dataSet As DataSet, schemaType As SchemaType) As DataTable()

Parameters

dataSet
DataSet

Een DataSet om het schema in te voegen.

schemaType
SchemaType

Een van de SchemaType waarden die aangeven hoe het schema moet worden ingevoegd.

Retouren

Een verwijzing naar een verzameling DataTable objecten die zijn toegevoegd aan de DataSet.

Implementeringen

Kenmerken

Voorbeelden

In het volgende voorbeeld wordt de afgeleide klasse gebruikt, SqlDataAdapterom een DataSet schema te vullen en een DataSet.

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;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)
        Dim adapter As 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

Opmerkingen

Met deze methode worden de schemagegevens opgehaald uit de gegevensbron met behulp van de SelectCommand.

Met een FillSchema bewerking wordt een DataTable aan het doel DataSettoegevoegd. Vervolgens worden kolommen toegevoegd aan de DataColumnCollectionDataTableen configureert u de volgende DataColumn eigenschappen als deze aanwezig zijn in de gegevensbron:

FillSchema configureert ook de PrimaryKey en Constraints eigenschappen volgens de volgende regels:

  • Als een of meer primaire-sleutelkolommen door de SelectCommandkolom worden geretourneerd, worden ze gebruikt als de primaire-sleutelkolommen voor de DataTable.

  • Als er geen primaire-sleutelkolommen worden geretourneerd, maar unieke kolommen zijn, worden de unieke kolommen gebruikt als primaire sleutel als en alleen als alle unieke kolommen niet kunnen worden ingetrokken. Als een van de kolommen nullable is, wordt er een UniqueConstraint toegevoegd aan de ConstraintCollection, maar de PrimaryKey eigenschap is niet ingesteld.

  • Als zowel primaire-sleutelkolommen als unieke kolommen worden geretourneerd, worden de primaire-sleutelkolommen gebruikt als de primaire-sleutelkolommen voor de DataTable.

Houd er rekening mee dat primaire sleutels en unieke beperkingen worden toegevoegd aan de ConstraintCollection regels volgens de voorgaande regels, maar andere beperkingstypen worden niet toegevoegd.

Als een unieke geclusterde index is gedefinieerd voor een kolom of kolommen in een SQL Server tabel en de primaire-sleutelbeperking is gedefinieerd voor een afzonderlijke set kolommen, worden de namen van de kolommen in de geclusterde index geretourneerd. Als u de naam of namen van de primaire-sleutelkolommen wilt retourneren, gebruikt u een queryhint met de SELECT-instructie waarmee de naam van de primaire-sleutelindex wordt opgegeven. Zie Hints (Transact-SQL) - Query voor meer informatie over het opgeven van queryhints.

Primaire-sleutelgegevens worden gebruikt om Fill rijen te zoeken en te vervangen waarvan de sleutelkolommen overeenkomen. Als dit niet het gewenste gedrag is, gebruikt Fill u dit zonder schemagegevens aan te vragen.

Als er IDataAdapter dubbele kolommen optreden tijdens het vullen van een DataTablekolom, worden er namen gegenereerd voor de volgende kolommen, met behulp van het patroon 'columnname1', 'columnname2', 'columnname3', enzovoort. Als de binnenkomende gegevens niet-benoemde kolommen bevatten, worden ze in het DataSet patroon Kolom1, Kolom2 enzovoort geplaatst. Wanneer er meerdere resultatensets worden toegevoegd aan de DataSet resultatenset, wordt deze in een afzonderlijke tabel geplaatst. Aanvullende resultatensets worden benoemd door integrale waarden toe te voegen aan de opgegeven tabelnaam (bijvoorbeeld 'Tabel', 'Tabel1', 'Tabel2', enzovoort). Als uw app kolom- en tabelnamen gebruikt, moet u ervoor zorgen dat er geen conflicten zijn met deze naamgevingspatronen.

Het IDbConnection object dat is gekoppeld aan de opdracht selecteren, moet geldig zijn, maar hoeft niet te worden geopend. Als de naam wordt gesloten voordat IDbConnection deze FillSchema wordt aangeroepen, wordt deze geopend om gegevens op te halen en vervolgens gesloten. Als de verbinding open is voordat FillSchema deze wordt aangeroepen, blijft deze open.

Note

Bij het verwerken van batch-SQL-instructies die meerdere resultaten retourneren, haalt de implementatie van FillSchema voor het .NET Framework-Data Provider voor OLE DB alleen schemagegevens op voor het eerste resultaat. Als u schemagegevens voor meerdere resultaten wilt ophalen, gebruikt Fill u deze met de MissingSchemaAction set op AddWithKey.

Wanneer u FillSchema gebruikt, voegt de .NET Framework-Data Provider voor SQL Server een FOR BROWSE-component toe aan de instructie die wordt uitgevoerd. De gebruiker moet zich bewust zijn van mogelijke bijwerkingen, zoals interferentie met het gebruik van SET FMTONLY ON-instructies. Zie SET FMTONLY (Transact-SQL)voor meer informatie.

Zie ook

Van toepassing op