DbDataAdapter.FillSchema DbDataAdapter.FillSchema DbDataAdapter.FillSchema Method

Definition

Fügt einem DataTable eine DataSet hinzu und konfiguriert das Schema so, dass es dem Schema in der Datenquelle entspricht. Adds a DataTable to a DataSet and configures the schema to match that in the data source.

Überlädt

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

Fügt dem angegebenen DataTable eine DataSet mit dem Namen "Table" hinzu und konfiguriert das Schema anhand des angegebenen SchemaType so, dass es dem Schema in der Datenquelle entspricht. Adds a DataTable to the specified DataSet and configures the schema to match that in the data source based on the specified SchemaType.

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior) FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior) FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Konfiguriert das Schema der angegebenen DataTable auf der Grundlage des angegebenen SchemaType, der angegebenen Befehlszeichenfolge und der angegebenen CommandBehavior-Werte. Configures the schema of the specified DataTable based on the specified SchemaType, command string, and CommandBehavior values.

FillSchema(DataSet, SchemaType, String) FillSchema(DataSet, SchemaType, String) FillSchema(DataSet, SchemaType, String)

Fügt dem angegebenen DataSet eine DataTable hinzu und konfiguriert das Schema auf der Grundlage des angegebenen SchemaType und der angegebenen DataTable so, dass es mit dem Schema in der Datenquelle übereinstimmt. Adds a DataTable to the specified DataSet and configures the schema to match that in the data source based upon the specified SchemaType and DataTable.

FillSchema(DataTable, SchemaType) FillSchema(DataTable, SchemaType) FillSchema(DataTable, SchemaType)

Konfiguriert das Schema der angegebenen DataTable auf der Grundlage des angegebenen SchemaType. Configures the schema of the specified DataTable based on the specified SchemaType.

FillSchema(DataSet, SchemaType) FillSchema(DataSet, SchemaType) FillSchema(DataSet, SchemaType)

Fügt eine DataTable namens „Tabelle“ zum angegebenen DataSet hinzu und konfiguriert das Schema auf der Grundlage des angegebenen SchemaType so, dass es mit dem Schema in der Datenquelle übereinstimmt. Adds a DataTable named "Table" to the specified DataSet and configures the schema to match that in the data source based on the specified SchemaType.

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

Fügt dem angegebenen DataTable eine DataSet mit dem Namen "Table" hinzu und konfiguriert das Schema anhand des angegebenen SchemaType so, dass es dem Schema in der Datenquelle entspricht. Adds a DataTable to the specified DataSet and configures the schema to match that in the data source based on the specified 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);
protected virtual System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, string srcTable, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]

Parameter

dataSet
DataSet DataSet DataSet

Die DataSet, die mit dem Schema aus der Datenquelle gefüllt werden soll. The DataSet to be filled with the schema from the data source.

schemaType
SchemaType SchemaType SchemaType

Einer der SchemaType-Werte. One of the SchemaType values.

command
IDbCommand IDbCommand IDbCommand

Die SQL-SELECT-Anweisung, mit der Zeilen aus der Datenquelle abgerufen werden. The SQL SELECT statement used to retrieve rows from the data source.

srcTable
String String String

Der Name der Quelltabelle, die für die Tabellenzuordnung verwendet werden soll. The name of the source table to use for table mapping.

behavior
CommandBehavior CommandBehavior CommandBehavior

Einer der CommandBehavior-Werte. One of the CommandBehavior values.

Gibt zurück

Ein Array von DataTable-Objekten, die aus der Datenquelle zurückgegebene Schemainformationen enthalten. An array of DataTable objects that contain schema information returned from the data source.

Hinweise

Die FillSchema Methode ruft das Schema ab, aus der Datenquelle mit dem SelectCommand.The FillSchema method retrieves the schema from the data source using the SelectCommand. Das Verbindungsobjekt zugeordnet der SelectCommand müssen gültig sein, aber es muss nicht geöffnet werden.The connection object associated with the SelectCommand must be valid, but it does not need to be open. Wenn die Verbindung geschlossen wird, bevor Sie FillSchema wird aufgerufen, es wird geöffnet, um Daten abzurufen und anschließend geschlossen.If the connection is closed before FillSchema is called, it is opened to retrieve data, then closed. Wenn die Verbindung vor dem Öffnen wird FillSchema ist aufgerufen wird, bleibt es geöffnet.If the connection is open before FillSchema is called, it remains open.

Ein FillSchema -Vorgang fügt einem DataTable an das Ziel DataSet.A FillSchema operation adds a DataTable to the destination DataSet. Es fügt dann die Spalten der DataColumnCollection von der DataTable, und konfiguriert die folgenden DataColumn -Eigenschaften fest, wenn sie in der Datenquelle vorhanden sind:It then adds columns to the DataColumnCollection of the DataTable, and configures the following DataColumn properties if they exist at the data source:

FillSchema Außerdem konfiguriert der PrimaryKey und Constraints Eigenschaften gemäß den folgenden Regeln:FillSchema also configures the PrimaryKey and Constraints properties according to the following rules:

  • Wenn eine oder mehrere Primärschlüsselspalten von zurückgegeben werden die SelectCommand, sie werden verwendet, als die Primärschlüsselspalten für die DataTable.If one or more primary key columns are returned by the SelectCommand, they are used as the primary key columns for the DataTable.

  • Wenn keine Primärschlüsselspalten werden zurückgegeben, jedoch eindeutige Spalten sind, werden die eindeutigen Spalten als Primärschlüssel verwendet, wenn und nur, wenn alle eindeutigen Spalten NULL nicht zulässig ist.If no primary key columns are returned but unique columns are, the unique columns are used as the primary key if, and only if, all the unique columns are nonnullable. Wenn eine der Spalten NULL-Werte zulässt, ist eine UniqueConstraint hinzugefügt wird die ConstraintCollection, aber die PrimaryKey Eigenschaft nicht festgelegt.If any of the columns are nullable, a UniqueConstraint is added to the ConstraintCollection, but the PrimaryKey property is not set.

  • Wenn sowohl die Primärschlüsselspalten als auch die eindeutige Spalten zurückgegeben werden, dienen als die Primärschlüsselspalten für die Primärschlüsselspalten der DataTable.If both primary key columns and unique columns are returned, the primary key columns are used as the primary key columns for the DataTable.

Beachten Sie, dass es sich bei Primärschlüsseln und unique-Einschränkungen, um hinzugefügt werden die ConstraintCollection gemäß den obigen Regeln, aber andere Einschränkung Typen nicht hinzugefügt werden.Note that primary keys and unique constraints are added to the ConstraintCollection according to the preceding rules, but other constraint types are not added.

Wenn Sie einen eindeutigen gruppierten Index für eine Spalte oder Spalten in einer SQL Server-Tabelle definiert ist, und primary Key-Einschränkung für einen separaten Satz von Spalten definiert ist, und klicken Sie dann den Namen der Spalten im gruppierten Index zurückgegeben werden.If a unique clustered index is defined on a column or columns in a SQL Server table and the primary key constraint is defined on a separate set of columns, then the names of the columns in the clustered index will be returned. Um den Namen oder die Namen der Primärschlüsselspalten zurückzugeben, verwenden Sie eines Abfragehinweises mit der SELECT-Anweisung, die den Namen der der Index des primären Schlüssels angibt.To return the name or names of the primary key columns, use a query hint with the SELECT statement that specifies the name of the primary key index. Weitere Informationen zum Angeben von Abfragehinweisen finden Sie unter Abfragehinweis (Transact-SQL).For more information about specifying query hints, see Query Hint (Transact-SQL).

Wenn die IDataAdapter auf trifft doppelte Spalten beim Auffüllen einer DataTable, generiert er Namen für die nachfolgenden Spalten, die mit dem Muster "Columnname1", "Columnname2", "Columnname3", und So weiter.If the IDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Wenn mehrere Resultsets hinzugefügt werden, um die DataSet jedes Resultset in einer separaten Tabelle platziert wird.When multiple result sets are added to the DataSet each result set is placed in a separate table. Zusätzliche Resultsets werden mit dem Namen durch Anhängen von ganzzahligen Werten auf dem angegebenen Tabellennamen (beispielsweise "Table", "Table1", "Table2" und So weiter.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on.). Anwendungen mithilfe von Spalten- und Tabellennamen sorgen dafür, dass verursacht einen Konflikt mit dem folgenden Benennungsmuster erfolgt nicht.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Die FillSchema -Methode unterstützt Szenarien, in denen die DataSet enthält mehrere DataTable Objekte, deren Namen sich nur durch Fall unterscheiden.The FillSchema method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. In solchen Situationen FillSchema führt einen Vergleich Groß-/Kleinschreibung beachtet, um die entsprechende Tabelle zu suchen, und erstellt eine neue Tabelle aus, wenn keine genaue Übereinstimmung vorhanden ist.In such situations, FillSchema performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. Der folgende C#-Code veranschaulicht dieses Verhalten.The following C# code illustrates this behavior.

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

Wenn FillSchema aufgerufen wird und die DataSet enthält nur eine DataTable , deren Name unterscheidet sich nur durch den Fall, DataTable wird aktualisiert.If FillSchema is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. In diesem Szenario ist der Vergleich Groß-und Kleinschreibung.In this scenario, the comparison is case insensitive. Der folgende C#-Code veranschaulicht dieses Verhalten.The following C# code illustrates this behavior.

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 keine zurückgibt Zeilen.FillSchema does not return any rows. Verwenden der Fill Methode zum Hinzufügen von Zeilen zu einer DataTable.Use the Fill method to add rows to a DataTable.

Hinweis

Bei der Behandlung von SQL-Anweisungen, die mehrere Ergebnisse, die Implementierung von zurückgeben FillSchema für die .NET Framework-Datenanbieter für OLE DB Schemainformationen für nur das erste Ergebnis ab.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Verwenden Sie zum Abrufen von Schemainformationen für mehrere Ergebnisse Fill mit der MissingSchemaAction festgelegt AddWithKey.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Bei der Verwendung von FillSchema fügt der .NET Framework-Datenanbieter für SQL Server eine FOR BROWSE-Klausel an die ausgeführte Anweisung an.When using FillSchema, the .NET Framework Data Provider for SQL Server appends a FOR BROWSE clause to the statement being executed. Der Benutzer muss mögliche Nebeneffekte beachten, z. B. Beeinträchtigungen bei der Verwendung von SET FMTONLY ON-Anweisungen.The user should be aware of potential side effects, such as interference with the use of SET FMTONLY ON statements. Weitere Informationen finden Sie unter SET FMTONLY (Transact-SQL).For more information, see SET FMTONLY (Transact-SQL).

Hinweise für Vererber

Diese Implementierung von der FillSchema(DataSet, SchemaType) Methode ist geschützt und durch einen .NET Framework-Datenanbieter für die Verwendung vorgesehen. This implementation of the FillSchema(DataSet, SchemaType) method is protected and is designed for use by a .NET Framework data provider.

Siehe auch

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior) FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior) FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Konfiguriert das Schema der angegebenen DataTable auf der Grundlage des angegebenen SchemaType, der angegebenen Befehlszeichenfolge und der angegebenen CommandBehavior-Werte. Configures the schema of the specified DataTable based on the specified SchemaType, command string, and CommandBehavior values.

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);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable

Parameter

dataTable
DataTable DataTable DataTable

Die DataTable, die mit dem Schema aus der Datenquelle gefüllt werden soll. The DataTable to be filled with the schema from the data source.

schemaType
SchemaType SchemaType SchemaType

Einer der SchemaType-Werte. One of the SchemaType values.

command
IDbCommand IDbCommand IDbCommand

Die SQL-SELECT-Anweisung, mit der Zeilen aus der Datenquelle abgerufen werden. The SQL SELECT statement used to retrieve rows from the data source.

behavior
CommandBehavior CommandBehavior CommandBehavior

Einer der CommandBehavior-Werte. One of the CommandBehavior values.

Gibt zurück

Ein DataTable-Objekt, das aus der Datenquelle zurückgegebene Schemainformationen enthält. A of DataTable object that contains schema information returned from the data source.

Hinweise

Die FillSchema Methode ruft das Schema ab, aus der Datenquelle mit dem SelectCommand.The FillSchema method retrieves the schema from the data source using the SelectCommand. Das Verbindungsobjekt zugeordnet der SelectCommand müssen gültig sein, aber es muss nicht geöffnet werden.The connection object associated with the SelectCommand must be valid, but it does not need to be open. Wenn die Verbindung geschlossen wird, bevor Sie FillSchema wird aufgerufen, es wird geöffnet, um Daten abzurufen und anschließend geschlossen.If the connection is closed before FillSchema is called, it is opened to retrieve data, then closed. Wenn die Verbindung vor dem Öffnen wird FillSchema ist aufgerufen wird, bleibt es geöffnet.If the connection is open before FillSchema is called, it remains open.

Ein FillSchema -Vorgang fügt einem DataTable an das Ziel DataSet.A FillSchema operation adds a DataTable to the destination DataSet. Es fügt dann die Spalten der DataColumnCollection von der DataTable, und konfiguriert die folgenden DataColumn -Eigenschaften fest, wenn sie in der Datenquelle vorhanden sind:It then adds columns to the DataColumnCollection of the DataTable, and configures the following DataColumn properties if they exist at the data source:

FillSchema Außerdem konfiguriert der PrimaryKey und Constraints Eigenschaften gemäß den folgenden Regeln:FillSchema also configures the PrimaryKey and Constraints properties according to the following rules:

  • Wenn eine oder mehrere Primärschlüsselspalten von zurückgegeben werden die SelectCommand, sie werden verwendet, als die Primärschlüsselspalten für die DataTable.If one or more primary key columns are returned by the SelectCommand, they are used as the primary key columns for the DataTable.

  • Wenn keine Primärschlüsselspalten werden zurückgegeben, jedoch eindeutige Spalten sind, werden die eindeutigen Spalten als Primärschlüssel verwendet, wenn und nur, wenn alle eindeutigen Spalten NULL nicht zulässig ist.If no primary key columns are returned but unique columns are, the unique columns are used as the primary key if, and only if, all the unique columns are nonnullable. Wenn eine der Spalten NULL-Werte zulässt, ist eine UniqueConstraint hinzugefügt wird die ConstraintCollection, aber die PrimaryKey Eigenschaft nicht festgelegt.If any of the columns are nullable, a UniqueConstraint is added to the ConstraintCollection, but the PrimaryKey property is not set.

  • Wenn sowohl die Primärschlüsselspalten als auch die eindeutige Spalten zurückgegeben werden, dienen als die Primärschlüsselspalten für die Primärschlüsselspalten der DataTable.If both primary key columns and unique columns are returned, the primary key columns are used as the primary key columns for the DataTable.

Beachten Sie, dass es sich bei Primärschlüsseln und unique-Einschränkungen, um hinzugefügt werden die ConstraintCollection gemäß den obigen Regeln, aber andere Einschränkung Typen nicht hinzugefügt werden.Note that primary keys and unique constraints are added to the ConstraintCollection according to the preceding rules, but other constraint types are not added.

Wenn Sie einen eindeutigen gruppierten Index für eine Spalte oder Spalten in einer SQL Server-Tabelle definiert ist, und primary Key-Einschränkung für einen separaten Satz von Spalten definiert ist, und klicken Sie dann den Namen der Spalten im gruppierten Index zurückgegeben werden.If a unique clustered index is defined on a column or columns in a SQL Server table and the primary key constraint is defined on a separate set of columns, then the names of the columns in the clustered index will be returned. Um den Namen oder die Namen der Primärschlüsselspalten zurückzugeben, verwenden Sie eines Abfragehinweises mit der SELECT-Anweisung, die den Namen der der Index des primären Schlüssels angibt.To return the name or names of the primary key columns, use a query hint with the SELECT statement that specifies the name of the primary key index. Weitere Informationen zum Angeben von Abfragehinweisen finden Sie unter Abfragehinweis (Transact-SQL).For more information about specifying query hints, see Query Hint (Transact-SQL).

Wenn die IDataAdapter auf trifft doppelte Spalten beim Auffüllen einer DataTable, generiert er Namen für die nachfolgenden Spalten, die mit dem Muster "Columnname1", "Columnname2", "Columnname3", und So weiter.If the IDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Wenn mehrere Resultsets hinzugefügt werden, um die DataSet jedes Resultset in einer separaten Tabelle platziert wird.When multiple result sets are added to the DataSet each result set is placed in a separate table. Zusätzliche Resultsets werden mit dem Namen durch Anhängen von ganzzahligen Werten auf dem angegebenen Tabellennamen (beispielsweise "Table", "Table1", "Table2" und So weiter.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on.). Anwendungen mithilfe von Spalten- und Tabellennamen sorgen dafür, dass verursacht einen Konflikt mit dem folgenden Benennungsmuster erfolgt nicht.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

FillSchema keine zurückgibt Zeilen.FillSchema does not return any rows. Verwenden der Fill Methode zum Hinzufügen von Zeilen zu einer DataTable.Use the Fill method to add rows to a DataTable.

Hinweis

Bei der Behandlung von SQL-Anweisungen, die mehrere Ergebnisse, die Implementierung von zurückgeben FillSchema für die .NET Framework-Datenanbieter für OLE DB Schemainformationen für nur das erste Ergebnis ab.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Verwenden Sie zum Abrufen von Schemainformationen für mehrere Ergebnisse Fill mit der MissingSchemaAction festgelegt AddWithKey.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Bei der Verwendung von FillSchema fügt der .NET Framework-Datenanbieter für SQL Server eine FOR BROWSE-Klausel an die ausgeführte Anweisung an.When using FillSchema, the .NET Framework Data Provider for SQL Server appends a FOR BROWSE clause to the statement being executed. Der Benutzer muss mögliche Nebeneffekte beachten, z. B. Beeinträchtigungen bei der Verwendung von SET FMTONLY ON-Anweisungen.The user should be aware of potential side effects, such as interference with the use of SET FMTONLY ON statements. Weitere Informationen finden Sie unter SET FMTONLY (Transact-SQL).For more information, see SET FMTONLY (Transact-SQL).

Hinweise für Vererber

Diese Implementierung von der FillSchema(DataSet, SchemaType) Methode ist geschützt und durch einen .NET Framework-Datenanbieter für die Verwendung vorgesehen. This implementation of the FillSchema(DataSet, SchemaType) method is protected and is designed for use by a .NET Framework data provider.

Siehe auch

FillSchema(DataSet, SchemaType, String) FillSchema(DataSet, SchemaType, String) FillSchema(DataSet, SchemaType, String)

Fügt dem angegebenen DataSet eine DataTable hinzu und konfiguriert das Schema auf der Grundlage des angegebenen SchemaType und der angegebenen DataTable so, dass es mit dem Schema in der Datenquelle übereinstimmt. Adds a DataTable to the specified DataSet and configures the schema to match that in the data source based upon the specified SchemaType and DataTable.

public:
 cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::String ^ srcTable);
public System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]

Parameter

dataSet
DataSet DataSet DataSet

Ein DataSet, in das das Schema eingefügt werden soll. A DataSet to insert the schema in.

schemaType
SchemaType SchemaType SchemaType

Einer der SchemaType-Werte, die angeben, wie das Schema eingefügt wird. One of the SchemaType values that specify how to insert the schema.

srcTable
String String String

Der Name der Quelltabelle, die für die Tabellenzuordnung verwendet werden soll. The name of the source table to use for table mapping.

Gibt zurück

Ein Verweis auf eine Auflistung von DataTable-Objekten, die dem DataSet hinzugefügt wurden. A reference to a collection of DataTable objects that were added to the DataSet.

Ausnahmen

Eine Quelltabelle, aus der das Schema abgerufen werden soll, konnte nicht gefunden werden. A source table from which to get the schema could not be found.

Beispiele

Im folgenden Beispiel wird die abgeleitete Klasse SqlDataAdapter, zum Füllen einer DataSet mit dem Schema, und gibt eine DataSet.The following example uses the derived class, SqlDataAdapter, to fill a DataSet with the schema, and returns a 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 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

Hinweise

Diese Methode ruft die Schemainformationen ab, aus der Datenquelle mit dem SelectCommand.This method retrieves the schema information from the data source using the SelectCommand.

Ein FillSchema -Vorgang fügt einem DataTable an das Ziel DataSet.A FillSchema operation adds a DataTable to the destination DataSet. Es fügt dann die Spalten der DataColumnCollection von der DataTable, und konfiguriert die folgenden DataColumn -Eigenschaften fest, wenn sie in der Datenquelle vorhanden sind:It then adds columns to the DataColumnCollection of the DataTable, and configures the following DataColumn properties if they exist at the data source:

FillSchema Außerdem konfiguriert der PrimaryKey und Constraints Eigenschaften gemäß den folgenden Regeln:FillSchema also configures the PrimaryKey and Constraints properties according to the following rules:

  • Wenn eine oder mehrere Primärschlüsselspalten von zurückgegeben werden die SelectCommand, sie werden verwendet, als die Primärschlüsselspalten für die DataTable.If one or more primary key columns are returned by the SelectCommand, they are used as the primary key columns for the DataTable.

  • Wenn keine Primärschlüsselspalten werden zurückgegeben, jedoch eindeutige Spalten sind, werden die eindeutigen Spalten als Primärschlüssel verwendet, wenn und nur, wenn alle eindeutigen Spalten NULL nicht zulässig ist.If no primary key columns are returned but unique columns are, the unique columns are used as the primary key if, and only if, all the unique columns are nonnullable. Wenn eine der Spalten NULL-Werte zulässt, ist eine UniqueConstraint hinzugefügt wird die ConstraintCollection, aber die PrimaryKey Eigenschaft nicht festgelegt.If any of the columns are nullable, a UniqueConstraint is added to the ConstraintCollection, but the PrimaryKey property is not set.

  • Wenn sowohl die Primärschlüsselspalten als auch die eindeutige Spalten zurückgegeben werden, dienen als die Primärschlüsselspalten für die Primärschlüsselspalten der DataTable.If both primary key columns and unique columns are returned, the primary key columns are used as the primary key columns for the DataTable.

Beachten Sie, dass es sich bei Primärschlüsseln und unique-Einschränkungen, um hinzugefügt werden die ConstraintCollection gemäß den obigen Regeln, aber andere Einschränkung Typen nicht hinzugefügt werden.Note that primary keys and unique constraints are added to the ConstraintCollection according to the preceding rules, but other constraint types are not added.

Wenn Sie einen eindeutigen gruppierten Index für eine Spalte oder Spalten in einer SQL Server-Tabelle definiert ist, und primary Key-Einschränkung für einen separaten Satz von Spalten definiert ist, und klicken Sie dann den Namen der Spalten im gruppierten Index zurückgegeben werden.If a unique clustered index is defined on a column or columns in a SQL Server table and the primary key constraint is defined on a separate set of columns, then the names of the columns in the clustered index will be returned. Um den Namen oder die Namen der Primärschlüsselspalten zurückzugeben, verwenden Sie eines Abfragehinweises mit der SELECT-Anweisung, die den Namen der der Index des primären Schlüssels angibt.To return the name or names of the primary key columns, use a query hint with the SELECT statement that specifies the name of the primary key index. Weitere Informationen zum Angeben von Abfragehinweisen finden Sie unter Abfragehinweis (Transact-SQL).For more information about specifying query hints, see Query Hint (Transact-SQL).

Informationen zum Primärschlüssel wird verwendet, während der Fill zum Suchen und ersetzen alle Zeilen, deren Schlüsselspalten übereinstimmen.Primary key information is used during Fill to find and replace any rows whose key columns match. Wenn dies nicht das gewünschte Verhalten ist, verwenden Sie Fill keine Schemainformationen.If this is not the desired behavior, use Fill without requesting schema information.

Wenn die DbDataAdapter auf trifft doppelte Spalten beim Auffüllen einer DataTable, generiert er Namen für die nachfolgenden Spalten, die mit dem Muster "Columnname1", "Columnname2", "Columnname3", und So weiter.If the DbDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Wenn mehrere Resultsets hinzugefügt werden, um die DataSet jedes Resultset in einer separaten Tabelle platziert wird.When multiple result sets are added to the DataSet each result set is placed in a separate table. Zusätzliche Resultsets werden mit dem Namen durch Anhängen von ganzzahligen Werten auf dem angegebenen Tabellennamen (beispielsweise "Table", "Table1", "Table2" und So weiter.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on.). Anwendungen mithilfe von Spalten- und Tabellennamen sorgen dafür, dass verursacht einen Konflikt mit dem folgenden Benennungsmuster erfolgt nicht.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Die FillSchema -Methode unterstützt Szenarien, in denen die DataSet enthält mehrere DataTable Objekte, deren Namen sich nur durch Fall unterscheiden.The FillSchema method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. In solchen Situationen FillSchema führt einen Vergleich Groß-/Kleinschreibung beachtet, um die entsprechende Tabelle zu suchen, und erstellt eine neue Tabelle aus, wenn keine genaue Übereinstimmung vorhanden ist.In such situations, FillSchema performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. Der folgende C#-Code veranschaulicht dieses Verhalten.The following C# code illustrates this behavior.

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

Wenn FillSchema aufgerufen wird und die DataSet enthält nur eine DataTable , deren Name unterscheidet sich nur durch den Fall, DataTable wird aktualisiert.If FillSchema is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. In diesem Szenario ist der Vergleich Groß-und Kleinschreibung.In this scenario, the comparison is case insensitive. Der folgende C#-Code veranschaulicht dieses Verhalten.The following C# code illustrates this behavior.

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.  

Die IDbConnection Objekt verknüpft ist, mit der select-Befehl muss gültig sein, aber es muss nicht öffnen.The IDbConnection object associated with the select command must be valid, but it does not need to open. Wenn die IDbConnection wird geschlossen, bevor FillSchema wird aufgerufen, es wird geöffnet, um Daten abzurufen und anschließend geschlossen.If the IDbConnection is closed before FillSchema is called, it is opened to retrieve data, then closed. Wenn die Verbindung vor dem Öffnen wird FillSchema wird aufgerufen, es bleibt geöffnet.If the connection is open before FillSchema is called, it is left open.

Hinweis

Bei der Behandlung von SQL-Anweisungen, die mehrere Ergebnisse, die Implementierung von zurückgeben FillSchema für die .NET Framework-Datenanbieter für OLE DB Schemainformationen für nur das erste Ergebnis ab.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Verwenden Sie zum Abrufen von Schemainformationen für mehrere Ergebnisse Fill mit der MissingSchemaAction festgelegt AddWithKey.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Bei der Verwendung von FillSchema fügt der .NET Framework-Datenanbieter für SQL Server eine FOR BROWSE-Klausel an die ausgeführte Anweisung an.When using FillSchema, the .NET Framework Data Provider for SQL Server appends a FOR BROWSE clause to the statement being executed. Der Benutzer muss mögliche Nebeneffekte beachten, z. B. Beeinträchtigungen bei der Verwendung von SET FMTONLY ON-Anweisungen.The user should be aware of potential side effects, such as interference with the use of SET FMTONLY ON statements. Weitere Informationen finden Sie unter SET FMTONLY (Transact-SQL).For more information, see SET FMTONLY (Transact-SQL).

Siehe auch

FillSchema(DataTable, SchemaType) FillSchema(DataTable, SchemaType) FillSchema(DataTable, SchemaType)

Konfiguriert das Schema der angegebenen DataTable auf der Grundlage des angegebenen SchemaType. Configures the schema of the specified DataTable based on the specified 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);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable

Parameter

dataTable
DataTable DataTable DataTable

Die DataTable, die mit dem Schema aus der Datenquelle gefüllt werden soll. The DataTable to be filled with the schema from the data source.

schemaType
SchemaType SchemaType SchemaType

Einer der SchemaType-Werte. One of the SchemaType values.

Gibt zurück

Eine DataTable, die die von der Datenquelle zurückgegebenen Schemainformationen enthält. A DataTable that contains schema information returned from the data source.

Beispiele

Im folgenden Beispiel wird die abgeleitete Klasse SqlDataAdapter, zum Füllen einer DataSet mit dem Schema, und gibt eine DataTable.The following example uses the derived class, SqlDataAdapter, to fill a DataSet with the schema, and returns a 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 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

Hinweise

Die FillSchema Methode ruft das Schema ab, aus der Datenquelle mit dem SelectCommand.The FillSchema method retrieves the schema from the data source using the SelectCommand. Das Verbindungsobjekt zugeordnet der SelectCommand müssen gültig sein, aber es muss nicht geöffnet werden.The connection object associated with the SelectCommand must be valid, but it does not need to be open. Wenn die Verbindung geschlossen wird, bevor Sie FillSchema wird aufgerufen, es wird geöffnet, um Daten abzurufen und anschließend geschlossen.If the connection is closed before FillSchema is called, it is opened to retrieve data, then closed. Wenn die Verbindung vor dem Öffnen wird FillSchema ist aufgerufen wird, bleibt es geöffnet.If the connection is open before FillSchema is called, it remains open.

Ein FillSchema Vorgang gibt eine DataTable.A FillSchema operation returns a DataTable. Es fügt dann die Spalten der DataColumnCollection von der DataTable, und konfiguriert die folgenden DataColumn -Eigenschaften fest, wenn sie in der Datenquelle vorhanden sind:It then adds columns to the DataColumnCollection of the DataTable, and configures the following DataColumn properties if they exist at the data source:

FillSchema Außerdem konfiguriert der PrimaryKey und Constraints Eigenschaften gemäß den folgenden Regeln:FillSchema also configures the PrimaryKey and Constraints properties according to the following rules:

  • Wenn eine PrimaryKey wurde bereits definiert wurde, für die DataTable, oder die DataTable enthält Daten, die PrimaryKey -Eigenschaft nicht festgelegt werden.If a PrimaryKey has already been defined for the DataTable, or the DataTable contains data, the PrimaryKey property will not be set.

  • Wenn eine oder mehrere Primärschlüsselspalten von zurückgegeben werden die SelectCommand, sie werden verwendet, als die Primärschlüsselspalten für die DataTable.If one or more primary key columns are returned by the SelectCommand, they are used as the primary key columns for the DataTable.

  • Wenn keine Primärschlüsselspalten werden zurückgegeben, jedoch eindeutige Spalten sind, werden die eindeutigen Spalten als Primärschlüssel verwendet, wenn und nur, wenn alle eindeutigen Spalten NULL nicht zulässig ist.If no primary key columns are returned but unique columns are, the unique columns are used as the primary key if, and only if, all the unique columns are nonnullable. Wenn eine der Spalten NULL-Werte zulässt, ist eine UniqueConstraint hinzugefügt wird die ConstraintCollection, aber die PrimaryKey Eigenschaft nicht festgelegt.If any of the columns are nullable, a UniqueConstraint is added to the ConstraintCollection, but the PrimaryKey property is not set.

  • Wenn sowohl die Primärschlüsselspalten als auch die eindeutige Spalten zurückgegeben werden, dienen als die Primärschlüsselspalten für die Primärschlüsselspalten der DataTable.If both primary key columns and unique columns are returned, the primary key columns are used as the primary key columns for the DataTable.

Beachten Sie, dass es sich bei Primärschlüsseln und unique-Einschränkungen, um hinzugefügt werden die ConstraintCollection gemäß den obigen Regeln, aber andere Einschränkung Typen nicht hinzugefügt werden.Note that primary keys and unique constraints are added to the ConstraintCollection according to the preceding rules, but other constraint types are not added. Dieser Prozess kann mehrere Roundtrips zum Server erfordern.This process may require several round-trips to the server.

Wenn Sie einen eindeutigen gruppierten Index für eine Spalte oder Spalten in einer SQL Server-Tabelle definiert ist, und primary Key-Einschränkung für einen separaten Satz von Spalten definiert ist, und klicken Sie dann den Namen der Spalten im gruppierten Index zurückgegeben werden.If a unique clustered index is defined on a column or columns in a SQL Server table and the primary key constraint is defined on a separate set of columns, then the names of the columns in the clustered index will be returned. Um den Namen oder die Namen der Primärschlüsselspalten zurückzugeben, verwenden Sie eines Abfragehinweises mit der SELECT-Anweisung, die den Namen der der Index des primären Schlüssels angibt.To return the name or names of the primary key columns, use a query hint with the SELECT statement that specifies the name of the primary key index. Weitere Informationen zum Angeben von Abfragehinweisen finden Sie unter Abfragehinweis (Transact-SQL).For more information about specifying query hints, see Query Hint (Transact-SQL).

Wenn die DbDataAdapter auf trifft doppelte Spalten beim Auffüllen einer DataTable, generiert er Namen für die nachfolgenden Spalten, die mit dem Muster "Columnname1", "Columnname2", "Columnname3", und So weiter.If the DbDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Wenn mehrere Resultsets hinzugefügt werden, um die DataSet jedes Resultset in einer separaten Tabelle platziert wird.When multiple result sets are added to the DataSet each result set is placed in a separate table. Zusätzliche Resultsets werden mit dem Namen durch Anhängen von ganzzahligen Werten auf dem angegebenen Tabellennamen (beispielsweise "Table", "Table1", "Table2" und So weiter.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on.). Anwendungen mithilfe von Spalten- und Tabellennamen sorgen dafür, dass verursacht einen Konflikt mit dem folgenden Benennungsmuster erfolgt nicht.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

FillSchema keine zurückgibt Zeilen.FillSchema does not return any rows. Verwenden der Fill Methode zum Hinzufügen von Zeilen zu einer DataTable.Use the Fill method to add rows to a DataTable.

Hinweis

Bei der Behandlung von SQL-Anweisungen, die mehrere Ergebnisse, die Implementierung von zurückgeben FillSchema für die .NET Framework-Datenanbieter für OLE DB Schemainformationen für nur das erste Ergebnis ab.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Verwenden Sie zum Abrufen von Schemainformationen für mehrere Ergebnisse Fill mit der MissingSchemaAction festgelegt AddWithKey.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Bei der Verwendung von FillSchema fügt der .NET Framework-Datenanbieter für SQL Server eine FOR BROWSE-Klausel an die ausgeführte Anweisung an.When using FillSchema, the .NET Framework Data Provider for SQL Server appends a FOR BROWSE clause to the statement being executed. Der Benutzer muss mögliche Nebeneffekte beachten, z. B. Beeinträchtigungen bei der Verwendung von SET FMTONLY ON-Anweisungen.The user should be aware of potential side effects, such as interference with the use of SET FMTONLY ON statements. Weitere Informationen finden Sie unter SET FMTONLY (Transact-SQL).For more information, see SET FMTONLY (Transact-SQL).

Siehe auch

FillSchema(DataSet, SchemaType) FillSchema(DataSet, SchemaType) FillSchema(DataSet, SchemaType)

Fügt eine DataTable namens „Tabelle“ zum angegebenen DataSet hinzu und konfiguriert das Schema auf der Grundlage des angegebenen SchemaType so, dass es mit dem Schema in der Datenquelle übereinstimmt. Adds a DataTable named "Table" to the specified DataSet and configures the schema to match that in the data source based on the specified SchemaType.

public:
 override cli::array <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);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]

Parameter

dataSet
DataSet DataSet DataSet

Ein DataSet, in das das Schema eingefügt werden soll. A DataSet to insert the schema in.

schemaType
SchemaType SchemaType SchemaType

Einer der SchemaType-Werte, die angeben, wie das Schema eingefügt wird. One of the SchemaType values that specify how to insert the schema.

Gibt zurück

Ein Verweis auf eine Auflistung von DataTable-Objekten, die dem DataSet hinzugefügt wurden. A reference to a collection of DataTable objects that were added to the DataSet.

Implementiert

Beispiele

Im folgenden Beispiel wird die abgeleitete Klasse SqlDataAdapter, zum Füllen einer DataSet mit dem Schema, und gibt eine DataSet.The following example uses the derived class, SqlDataAdapter, to fill a DataSet with the schema, and returns a 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 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

Hinweise

Diese Methode ruft die Schemainformationen ab, aus der Datenquelle mit dem SelectCommand.This method retrieves the schema information from the data source using the SelectCommand.

Ein FillSchema -Vorgang fügt einem DataTable an das Ziel DataSet.A FillSchema operation adds a DataTable to the destination DataSet. Es fügt dann die Spalten der DataColumnCollection von der DataTable, und konfiguriert die folgenden DataColumn -Eigenschaften fest, wenn sie in der Datenquelle vorhanden sind:It then adds columns to the DataColumnCollection of the DataTable, and configures the following DataColumn properties if they exist at the data source:

FillSchema Außerdem konfiguriert der PrimaryKey und Constraints Eigenschaften gemäß den folgenden Regeln:FillSchema also configures the PrimaryKey and Constraints properties according to the following rules:

  • Wenn eine oder mehrere Primärschlüsselspalten von zurückgegeben werden die SelectCommand, sie werden verwendet, als die Primärschlüsselspalten für die DataTable.If one or more primary key columns are returned by the SelectCommand, they are used as the primary key columns for the DataTable.

  • Wenn keine Primärschlüsselspalten werden zurückgegeben, jedoch eindeutige Spalten sind, werden die eindeutigen Spalten als Primärschlüssel verwendet, wenn und nur, wenn alle eindeutigen Spalten NULL nicht zulässig ist.If no primary key columns are returned but unique columns are, the unique columns are used as the primary key if, and only if, all the unique columns are nonnullable. Wenn eine der Spalten NULL-Werte zulässt, ist eine UniqueConstraint hinzugefügt wird die ConstraintCollection, aber die PrimaryKey Eigenschaft nicht festgelegt.If any of the columns are nullable, a UniqueConstraint is added to the ConstraintCollection, but the PrimaryKey property is not set.

  • Wenn sowohl die Primärschlüsselspalten als auch die eindeutige Spalten zurückgegeben werden, dienen als die Primärschlüsselspalten für die Primärschlüsselspalten der DataTable.If both primary key columns and unique columns are returned, the primary key columns are used as the primary key columns for the DataTable.

Beachten Sie, dass es sich bei Primärschlüsseln und unique-Einschränkungen, um hinzugefügt werden die ConstraintCollection gemäß den obigen Regeln, aber andere Einschränkung Typen nicht hinzugefügt werden.Note that primary keys and unique constraints are added to the ConstraintCollection according to the preceding rules, but other constraint types are not added.

Wenn Sie einen eindeutigen gruppierten Index für eine Spalte oder Spalten in einer SQL Server-Tabelle definiert ist, und primary Key-Einschränkung für einen separaten Satz von Spalten definiert ist, und klicken Sie dann den Namen der Spalten im gruppierten Index zurückgegeben werden.If a unique clustered index is defined on a column or columns in a SQL Server table and the primary key constraint is defined on a separate set of columns, then the names of the columns in the clustered index will be returned. Um den Namen oder die Namen der Primärschlüsselspalten zurückzugeben, verwenden Sie eines Abfragehinweises mit der SELECT-Anweisung, die den Namen der der Index des primären Schlüssels angibt.To return the name or names of the primary key columns, use a query hint with the SELECT statement that specifies the name of the primary key index. Weitere Informationen zum Angeben von Abfragehinweisen finden Sie unter Abfragehinweis (Transact-SQL).For more information about specifying query hints, see Query Hint (Transact-SQL).

Informationen zum Primärschlüssel wird verwendet, während der Fill zum Suchen und ersetzen alle Zeilen, deren Schlüsselspalten übereinstimmen.Primary key information is used during Fill to find and replace any rows whose key columns match. Wenn dies nicht das gewünschte Verhalten ist, verwenden Sie Fill keine Schemainformationen.If this is not the desired behavior, use Fill without requesting schema information.

Wenn die IDataAdapter auf trifft doppelte Spalten beim Auffüllen einer DataTable, generiert er Namen für die nachfolgenden Spalten, die mit dem Muster "Columnname1", "Columnname2", "Columnname3", und So weiter.If the IDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Wenn mehrere Resultsets hinzugefügt werden, um die DataSet jedes Resultset in einer separaten Tabelle platziert wird.When multiple result sets are added to the DataSet each result set is placed in a separate table. Zusätzliche Resultsets werden mit dem Namen durch Anhängen von ganzzahligen Werten auf dem angegebenen Tabellennamen (beispielsweise "Table", "Table1", "Table2" und So weiter.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on.). Anwendungen mithilfe von Spalten- und Tabellennamen sorgen dafür, dass verursacht einen Konflikt mit dem folgenden Benennungsmuster erfolgt nicht.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Die IDbConnection Objekt verknüpft ist, mit der select-Befehl muss gültig sein, aber es muss nicht öffnen.The IDbConnection object associated with the select command must be valid, but it does not need to open. Wenn die IDbConnection wird geschlossen, bevor FillSchema wird aufgerufen, es wird geöffnet, um Daten abzurufen und anschließend geschlossen.If the IDbConnection is closed before FillSchema is called, it is opened to retrieve data, then closed. Wenn die Verbindung vor dem Öffnen wird FillSchema wird aufgerufen, es bleibt geöffnet.If the connection is open before FillSchema is called, it is left open.

Hinweis

Bei der Behandlung von SQL-Anweisungen, die mehrere Ergebnisse, die Implementierung von zurückgeben FillSchema für die .NET Framework-Datenanbieter für OLE DB Schemainformationen für nur das erste Ergebnis ab.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Verwenden Sie zum Abrufen von Schemainformationen für mehrere Ergebnisse Fill mit der MissingSchemaAction festgelegt AddWithKey.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Bei der Verwendung von FillSchema fügt der .NET Framework-Datenanbieter für SQL Server eine FOR BROWSE-Klausel an die ausgeführte Anweisung an.When using FillSchema, the .NET Framework Data Provider for SQL Server appends a FOR BROWSE clause to the statement being executed. Der Benutzer muss mögliche Nebeneffekte beachten, z. B. Beeinträchtigungen bei der Verwendung von SET FMTONLY ON-Anweisungen.The user should be aware of potential side effects, such as interference with the use of SET FMTONLY ON statements. Weitere Informationen finden Sie unter SET FMTONLY (Transact-SQL).For more information, see SET FMTONLY (Transact-SQL).

Siehe auch

Gilt für: