DbDataAdapter.FillSchema Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
| Name | Beschreibung |
|---|---|
| FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior) |
Fügt dem angegebenen Objekt einen DataTable Wert hinzu und konfiguriert das Schema so, dass es dem in der Datenquelle basierend auf dem angegebenen Entspricht entsprichtSchemaType.DataSet |
| FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior) |
Konfiguriert das Schema des angegebenen Werts DataTable basierend auf der angegebenen SchemaTypeBefehlszeichenfolge und CommandBehavior werten. |
| FillSchema(DataSet, SchemaType, String) |
Fügt dem angegebenen DataSet Objekt einen DataTable Wert hinzu und konfiguriert das Schema so, dass es dem in der Datenquelle basierend auf dem angegebenen SchemaType und DataTable. |
| FillSchema(DataTable, SchemaType) |
Konfiguriert das Schema des angegebenen Werts DataTable basierend auf dem angegebenen SchemaType. |
| FillSchema(DataSet, SchemaType) |
Fügt der angegebenen DataSet Tabelle eine DataTable benannte Tabelle hinzu und konfiguriert das Schema so, dass es dem in der Datenquelle basierend auf dem angegebenen entsprichtSchemaType. |
FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
Fügt dem angegebenen Objekt einen DataTable Wert hinzu und konfiguriert das Schema so, dass es dem in der Datenquelle basierend auf dem angegebenen Entspricht entsprichtSchemaType.DataSet
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()
Parameter
- schemaType
- SchemaType
Einer der SchemaType Werte.
- command
- IDbCommand
Die SQL SELECT-Anweisung, die zum Abrufen von Zeilen aus der Datenquelle verwendet wird.
- srcTable
- String
Der Name der Quelltabelle, die für die Tabellenzuordnung verwendet werden soll.
- behavior
- CommandBehavior
Einer der CommandBehavior Werte.
Gibt zurück
Ein Array von DataTable Objekten, die Schemainformationen enthalten, die von der Datenquelle zurückgegeben werden.
- Attribute
Hinweise
Die FillSchema Methode ruft das Schema aus der Datenquelle mithilfe der SelectCommand. Das dem SelectCommand Objekt zugeordnete Verbindungsobjekt muss gültig sein, muss jedoch nicht geöffnet sein. Wenn die Verbindung vor dem FillSchema Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor FillSchema sie aufgerufen wird, bleibt sie geöffnet.
Ein FillSchema Vorgang fügt dem Ziel DataSeteinen DataTable hinzu. Anschließend werden dem DataColumnCollection Element DataTableSpalten hinzugefügt und die folgenden DataColumn Eigenschaften konfiguriert, wenn sie in der Datenquelle vorhanden sind:
AutoIncrement. Sie müssen festlegen und AutoIncrementSeed separat festlegenAutoIncrementStep.
FillSchema konfiguriert außerdem die PrimaryKey eigenschaften Constraints entsprechend den folgenden Regeln:
Wenn eine oder mehrere Primärschlüsselspalten von der SelectCommandZurückgegeben werden, werden sie als Primärschlüsselspalten für die DataTable.
Wenn keine Primärschlüsselspalten zurückgegeben werden, aber eindeutige Spalten sind, werden die eindeutigen Spalten als Primärschlüssel verwendet, wenn und nur dann, wenn alle eindeutigen Spalten nicht ullierbar sind. Wenn eine der Spalten nullwertebar ist, wird eine UniqueConstraint der ConstraintCollectionSpalten hinzugefügt, die Eigenschaft wird jedoch PrimaryKey nicht festgelegt.
Wenn sowohl Primärschlüsselspalten als auch eindeutige Spalten zurückgegeben werden, werden die Primärschlüsselspalten als Primärschlüsselspalten für die DataTable.
Beachten Sie, dass Primärschlüssel und eindeutige Einschränkungen den ConstraintCollection vorherigen Regeln hinzugefügt werden, andere Einschränkungstypen werden jedoch nicht hinzugefügt.
Wenn ein eindeutiger gruppierter Index für eine Spalte oder Spalten in einer SQL Server-Tabelle definiert ist und die Primärschlüsseleinschränkung für einen separaten Satz von Spalten definiert wird, werden die Namen der Spalten im gruppierten Index zurückgegeben. Um den Namen oder die Namen der Primärschlüsselspalten zurückzugeben, verwenden Sie einen Abfragehinweis mit der SELECT-Anweisung, die den Namen des Primärschlüsselindex angibt. Weitere Informationen zum Angeben von Abfragehinweisen finden Sie unter Hinweise (Transact-SQL) – Abfrage.
Wenn beim IDataAdapter Auffüllen doppelter DataTableSpalten doppelte Spalten auftreten, generiert sie Namen für die nachfolgenden Spalten, wobei das Muster "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt. Wenn dem resultset mehrere Resultsets hinzugefügt DataSet werden, wird in einer separaten Tabelle platziert. Zusätzliche Resultsets werden durch Anfügen integraler Werte an den angegebenen Tabellennamen benannt (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.). Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.
Die FillSchema Methode unterstützt Szenarien, in denen mehrere DataSet Objekte enthalten DataTable sind, deren Namen nur nach Groß-/Kleinschreibung abweichen. In solchen Situationen führt ein Vergleich zwischen Groß- und Kleinschreibung aus, FillSchema um die entsprechende Tabelle zu finden, und erstellt eine neue Tabelle, wenn keine genaue Übereinstimmung vorhanden ist. Der folgende C#-Code veranschaulicht dieses Verhalten.
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".
Wird FillSchema aufgerufen und enthält DataSet nur eine DataTable , deren Name nur nach Groß-/Kleinschreibung unterschiedlich ist, wird dies DataTable aktualisiert. In diesem Szenario wird die Groß-/Kleinschreibung nicht beachtet. Der folgende C#-Code veranschaulicht dieses Verhalten.
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 gibt keine Zeilen zurück. Verwenden Sie die Fill Methode zum Hinzufügen von Zeilen zu einem DataTable.
Hinweis
Bei der Verarbeitung von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung FillSchema des .NET Framework-Datenanbieters für OLE DB Schemainformationen nur für das erste Ergebnis ab. Verwenden Sie Fill zum Abrufen von Schemainformationen für mehrere Ergebnisse den MissingSchemaAction Satz auf AddWithKey.
Bei Verwendung FillSchemafügt der .NET Framework-Datenanbieter für SQL Server eine FOR BROWSE-Klausel an die auszuführende Anweisung an. Der Benutzer sollte sich potenzielle Nebenwirkungen bewusst sein, wie z. B. Störungen bei der Verwendung von SET FMTONLY ON-Anweisungen. Weitere Informationen finden Sie unter SET FMTONLY (Transact-SQL).
Hinweise für Vererber
Diese Implementierung der FillSchema(DataSet, SchemaType) Methode ist geschützt und wurde für die Verwendung durch einen .NET Framework-Datenanbieter entwickelt.
Weitere Informationen
Gilt für:
FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
Konfiguriert das Schema des angegebenen Werts DataTable basierend auf der angegebenen SchemaTypeBefehlszeichenfolge und CommandBehavior werten.
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
Parameter
- schemaType
- SchemaType
Einer der SchemaType Werte.
- command
- IDbCommand
Die SQL SELECT-Anweisung, die zum Abrufen von Zeilen aus der Datenquelle verwendet wird.
- behavior
- CommandBehavior
Einer der CommandBehavior Werte.
Gibt zurück
Ein Objekt DataTable , das Schemainformationen enthält, die von der Datenquelle zurückgegeben werden.
- Attribute
Hinweise
Die FillSchema Methode ruft das Schema aus der Datenquelle mithilfe der SelectCommand. Das dem SelectCommand Objekt zugeordnete Verbindungsobjekt muss gültig sein, muss jedoch nicht geöffnet sein. Wenn die Verbindung vor dem FillSchema Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor FillSchema sie aufgerufen wird, bleibt sie geöffnet.
Ein FillSchema Vorgang fügt dem Ziel DataSeteinen DataTable hinzu. Anschließend werden dem DataColumnCollection Element DataTableSpalten hinzugefügt und die folgenden DataColumn Eigenschaften konfiguriert, wenn sie in der Datenquelle vorhanden sind:
AutoIncrement. Sie müssen festlegen und AutoIncrementSeed separat festlegenAutoIncrementStep.
FillSchema konfiguriert außerdem die PrimaryKey eigenschaften Constraints entsprechend den folgenden Regeln:
Wenn eine oder mehrere Primärschlüsselspalten von der SelectCommandZurückgegeben werden, werden sie als Primärschlüsselspalten für die DataTable.
Wenn keine Primärschlüsselspalten zurückgegeben werden, aber eindeutige Spalten sind, werden die eindeutigen Spalten als Primärschlüssel verwendet, wenn und nur dann, wenn alle eindeutigen Spalten nicht ullierbar sind. Wenn eine der Spalten nullwertebar ist, wird eine UniqueConstraint der ConstraintCollectionSpalten hinzugefügt, die Eigenschaft wird jedoch PrimaryKey nicht festgelegt.
Wenn sowohl Primärschlüsselspalten als auch eindeutige Spalten zurückgegeben werden, werden die Primärschlüsselspalten als Primärschlüsselspalten für die DataTable.
Beachten Sie, dass Primärschlüssel und eindeutige Einschränkungen den ConstraintCollection vorherigen Regeln hinzugefügt werden, andere Einschränkungstypen werden jedoch nicht hinzugefügt.
Wenn ein eindeutiger gruppierter Index für eine Spalte oder Spalten in einer SQL Server-Tabelle definiert ist und die Primärschlüsseleinschränkung für einen separaten Satz von Spalten definiert wird, werden die Namen der Spalten im gruppierten Index zurückgegeben. Um den Namen oder die Namen der Primärschlüsselspalten zurückzugeben, verwenden Sie einen Abfragehinweis mit der SELECT-Anweisung, die den Namen des Primärschlüsselindex angibt. Weitere Informationen zum Angeben von Abfragehinweisen finden Sie unter Hinweise (Transact-SQL) – Abfrage.
Wenn beim IDataAdapter Auffüllen doppelter DataTableSpalten doppelte Spalten auftreten, generiert sie Namen für die nachfolgenden Spalten, wobei das Muster "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt. Wenn dem resultset mehrere Resultsets hinzugefügt DataSet werden, wird in einer separaten Tabelle platziert. Zusätzliche Resultsets werden durch Anfügen integraler Werte an den angegebenen Tabellennamen benannt (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.). Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.
FillSchema gibt keine Zeilen zurück. Verwenden Sie die Fill Methode zum Hinzufügen von Zeilen zu einem DataTable.
Hinweis
Bei der Verarbeitung von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung FillSchema des .NET Framework-Datenanbieters für OLE DB Schemainformationen nur für das erste Ergebnis ab. Verwenden Sie Fill zum Abrufen von Schemainformationen für mehrere Ergebnisse den MissingSchemaAction Satz auf AddWithKey.
Bei Verwendung FillSchemafügt der .NET Framework-Datenanbieter für SQL Server eine FOR BROWSE-Klausel an die auszuführende Anweisung an. Der Benutzer sollte sich potenzielle Nebenwirkungen bewusst sein, wie z. B. Störungen bei der Verwendung von SET FMTONLY ON-Anweisungen. Weitere Informationen finden Sie unter SET FMTONLY (Transact-SQL).
Hinweise für Vererber
Diese Implementierung der FillSchema(DataSet, SchemaType) Methode ist geschützt und wurde für die Verwendung durch einen .NET Framework-Datenanbieter entwickelt.
Weitere Informationen
Gilt für:
FillSchema(DataSet, SchemaType, String)
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
Fügt dem angegebenen DataSet Objekt einen DataTable Wert hinzu und konfiguriert das Schema so, dass es dem in der Datenquelle basierend auf dem angegebenen SchemaType und 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()
Parameter
- schemaType
- SchemaType
Einer der SchemaType Werte, die angeben, wie das Schema eingefügt werden soll.
- srcTable
- String
Der Name der Quelltabelle, die für die Tabellenzuordnung verwendet werden soll.
Gibt zurück
Ein Verweis auf eine Auflistung von DataTable Objekten, die dem DataSetObjekt hinzugefügt wurden.
- Attribute
Ausnahmen
Eine Quelltabelle, aus der das Schema abgerufen werden soll, wurde nicht gefunden.
Beispiele
Im folgenden Beispiel wird die abgeleitete Klasse verwendet, SqlDataAdapterum ein DataSet Schema auszufüllen und ein 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
Hinweise
Diese Methode ruft die Schemainformationen aus der Datenquelle mithilfe der SelectCommand.
Ein FillSchema Vorgang fügt dem Ziel DataSeteinen DataTable hinzu. Anschließend werden dem DataColumnCollection Element DataTableSpalten hinzugefügt und die folgenden DataColumn Eigenschaften konfiguriert, wenn sie in der Datenquelle vorhanden sind:
AutoIncrement. Sie müssen festlegen und AutoIncrementSeed separat festlegenAutoIncrementStep.
FillSchema konfiguriert außerdem die PrimaryKey eigenschaften Constraints entsprechend den folgenden Regeln:
Wenn eine oder mehrere Primärschlüsselspalten von der SelectCommandZurückgegeben werden, werden sie als Primärschlüsselspalten für die DataTable.
Wenn keine Primärschlüsselspalten zurückgegeben werden, aber eindeutige Spalten sind, werden die eindeutigen Spalten als Primärschlüssel verwendet, wenn und nur dann, wenn alle eindeutigen Spalten nicht ullierbar sind. Wenn eine der Spalten nullwertebar ist, wird eine UniqueConstraint der ConstraintCollectionSpalten hinzugefügt, die Eigenschaft wird jedoch PrimaryKey nicht festgelegt.
Wenn sowohl Primärschlüsselspalten als auch eindeutige Spalten zurückgegeben werden, werden die Primärschlüsselspalten als Primärschlüsselspalten für die DataTable.
Beachten Sie, dass Primärschlüssel und eindeutige Einschränkungen den ConstraintCollection vorherigen Regeln hinzugefügt werden, andere Einschränkungstypen werden jedoch nicht hinzugefügt.
Wenn ein eindeutiger gruppierter Index für eine Spalte oder Spalten in einer SQL Server-Tabelle definiert ist und die Primärschlüsseleinschränkung für einen separaten Satz von Spalten definiert wird, werden die Namen der Spalten im gruppierten Index zurückgegeben. Um den Namen oder die Namen der Primärschlüsselspalten zurückzugeben, verwenden Sie einen Abfragehinweis mit der SELECT-Anweisung, die den Namen des Primärschlüsselindex angibt. Weitere Informationen zum Angeben von Abfragehinweisen finden Sie unter Hinweise (Transact-SQL) – Abfrage.
Primärschlüsselinformationen werden während des Fill Suchens und Ersetzens von Zeilen verwendet, deren Schlüsselspalten übereinstimmen. Wenn dies nicht das gewünschte Verhalten ist, verwenden Sie diese Option Fill , ohne Schemainformationen anzufordern.
Wenn beim DbDataAdapter Auffüllen doppelter DataTableSpalten doppelte Spalten auftreten, generiert sie Namen für die nachfolgenden Spalten, wobei das Muster "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt. Wenn dem resultset mehrere Resultsets hinzugefügt DataSet werden, wird in einer separaten Tabelle platziert. Zusätzliche Resultsets werden durch Anfügen integraler Werte an den angegebenen Tabellennamen benannt (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.). Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.
Die FillSchema Methode unterstützt Szenarien, in denen mehrere DataSet Objekte enthalten DataTable sind, deren Namen nur nach Groß-/Kleinschreibung abweichen. In solchen Situationen führt ein Vergleich zwischen Groß- und Kleinschreibung aus, FillSchema um die entsprechende Tabelle zu finden, und erstellt eine neue Tabelle, wenn keine genaue Übereinstimmung vorhanden ist. Der folgende C#-Code veranschaulicht dieses Verhalten.
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".
Wird FillSchema aufgerufen und enthält DataSet nur eine DataTable , deren Name nur nach Groß-/Kleinschreibung unterschiedlich ist, wird dies DataTable aktualisiert. In diesem Szenario wird die Groß-/Kleinschreibung nicht beachtet. Der folgende C#-Code veranschaulicht dieses Verhalten.
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.
Das IDbConnection dem Auswahlbefehl zugeordnete Objekt muss gültig sein, muss aber nicht geöffnet werden. Wenn die IDbConnection Datei vor dem FillSchema Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor FillSchema sie aufgerufen wird, bleibt sie geöffnet.
Hinweis
Bei der Verarbeitung von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung FillSchema des .NET Framework-Datenanbieters für OLE DB Schemainformationen nur für das erste Ergebnis ab. Verwenden Sie Fill zum Abrufen von Schemainformationen für mehrere Ergebnisse den MissingSchemaAction Satz auf AddWithKey.
Bei Verwendung FillSchemafügt der .NET Framework-Datenanbieter für SQL Server eine FOR BROWSE-Klausel an die auszuführende Anweisung an. Der Benutzer sollte sich potenzielle Nebenwirkungen bewusst sein, wie z. B. Störungen bei der Verwendung von SET FMTONLY ON-Anweisungen. Weitere Informationen finden Sie unter SET FMTONLY (Transact-SQL).
Weitere Informationen
Gilt für:
FillSchema(DataTable, SchemaType)
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
Konfiguriert das Schema des angegebenen Werts DataTable basierend auf dem angegebenen 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
Parameter
- schemaType
- SchemaType
Einer der SchemaType Werte.
Gibt zurück
A DataTable that contains schema information returned from the data source.
- Attribute
Beispiele
Im folgenden Beispiel wird die abgeleitete Klasse verwendet, SqlDataAdapterum ein DataSet Schema auszufüllen und ein 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
Hinweise
Die FillSchema Methode ruft das Schema aus der Datenquelle mithilfe der SelectCommand. Das dem SelectCommand Objekt zugeordnete Verbindungsobjekt muss gültig sein, muss jedoch nicht geöffnet sein. Wenn die Verbindung vor dem FillSchema Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor FillSchema sie aufgerufen wird, bleibt sie geöffnet.
Ein FillSchema Vorgang gibt einen DataTable. Anschließend werden dem DataColumnCollection Element DataTableSpalten hinzugefügt und die folgenden DataColumn Eigenschaften konfiguriert, wenn sie in der Datenquelle vorhanden sind:
AutoIncrement. Sie müssen festlegen und AutoIncrementSeed separat festlegenAutoIncrementStep.
FillSchema konfiguriert außerdem die PrimaryKey eigenschaften Constraints entsprechend den folgenden Regeln:
Wenn bereits ein PrimaryKey Element für das
DataTable, oder dieDataTableenthält Daten definiert wurde, wird diePrimaryKeyEigenschaft nicht festgelegt.Wenn eine oder mehrere Primärschlüsselspalten von der SelectCommandZurückgegeben werden, werden sie als Primärschlüsselspalten für die
DataTable.Wenn keine Primärschlüsselspalten zurückgegeben werden, aber eindeutige Spalten sind, werden die eindeutigen Spalten als Primärschlüssel verwendet, wenn und nur dann, wenn alle eindeutigen Spalten nicht ullierbar sind. Wenn eine der Spalten nullwertebar ist, wird eine UniqueConstraint der ConstraintCollectionSpalten hinzugefügt, die Eigenschaft wird jedoch
PrimaryKeynicht festgelegt.Wenn sowohl Primärschlüsselspalten als auch eindeutige Spalten zurückgegeben werden, werden die Primärschlüsselspalten als Primärschlüsselspalten für die
DataTable.
Beachten Sie, dass Primärschlüssel und eindeutige Einschränkungen den ConstraintCollection vorherigen Regeln hinzugefügt werden, andere Einschränkungstypen werden jedoch nicht hinzugefügt. Dieser Vorgang erfordert möglicherweise mehrere Roundtrips zum Server.
Wenn ein eindeutiger gruppierter Index für eine Spalte oder Spalten in einer SQL Server-Tabelle definiert ist und die Primärschlüsseleinschränkung für einen separaten Satz von Spalten definiert wird, werden die Namen der Spalten im gruppierten Index zurückgegeben. Um den Namen oder die Namen der Primärschlüsselspalten zurückzugeben, verwenden Sie einen Abfragehinweis mit der SELECT-Anweisung, die den Namen des Primärschlüsselindex angibt. Weitere Informationen zum Angeben von Abfragehinweisen finden Sie unter Hinweise (Transact-SQL) – Abfrage.
Wenn beim DbDataAdapter Auffüllen doppelter DataTableSpalten doppelte Spalten auftreten, generiert sie Namen für die nachfolgenden Spalten, wobei das Muster "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt. Wenn dem resultset mehrere Resultsets hinzugefügt DataSet werden, wird in einer separaten Tabelle platziert. Zusätzliche Resultsets werden durch Anfügen integraler Werte an den angegebenen Tabellennamen benannt (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.). Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.
FillSchema gibt keine Zeilen zurück. Verwenden Sie die Fill Methode zum Hinzufügen von Zeilen zu einem DataTable.
Hinweis
Bei der Verarbeitung von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung FillSchema des .NET Framework-Datenanbieters für OLE DB Schemainformationen nur für das erste Ergebnis ab. Verwenden Sie Fill zum Abrufen von Schemainformationen für mehrere Ergebnisse den MissingSchemaAction Satz auf AddWithKey.
Bei Verwendung FillSchemafügt der .NET Framework-Datenanbieter für SQL Server eine FOR BROWSE-Klausel an die auszuführende Anweisung an. Der Benutzer sollte sich potenzielle Nebenwirkungen bewusst sein, wie z. B. Störungen bei der Verwendung von SET FMTONLY ON-Anweisungen. Weitere Informationen finden Sie unter SET FMTONLY (Transact-SQL).
Weitere Informationen
Gilt für:
FillSchema(DataSet, SchemaType)
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
- Quelle:
- DbDataAdapter.cs
Fügt der angegebenen DataSet Tabelle eine DataTable benannte Tabelle hinzu und konfiguriert das Schema so, dass es dem in der Datenquelle basierend auf dem angegebenen entsprichtSchemaType.
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()
Parameter
- schemaType
- SchemaType
Einer der SchemaType Werte, die angeben, wie das Schema eingefügt werden soll.
Gibt zurück
Ein Verweis auf eine Auflistung von DataTable Objekten, die dem DataSetObjekt hinzugefügt wurden.
Implementiert
- Attribute
Beispiele
Im folgenden Beispiel wird die abgeleitete Klasse verwendet, SqlDataAdapterum ein DataSet Schema auszufüllen und ein 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
Hinweise
Diese Methode ruft die Schemainformationen aus der Datenquelle mithilfe der SelectCommand.
Ein FillSchema Vorgang fügt dem Ziel DataSeteinen DataTable hinzu. Anschließend werden dem DataColumnCollection Element DataTableSpalten hinzugefügt und die folgenden DataColumn Eigenschaften konfiguriert, wenn sie in der Datenquelle vorhanden sind:
AutoIncrement. Sie müssen festlegen und AutoIncrementSeed separat festlegenAutoIncrementStep.
FillSchema konfiguriert außerdem die PrimaryKey eigenschaften Constraints entsprechend den folgenden Regeln:
Wenn eine oder mehrere Primärschlüsselspalten von der SelectCommandZurückgegeben werden, werden sie als Primärschlüsselspalten für die DataTable.
Wenn keine Primärschlüsselspalten zurückgegeben werden, aber eindeutige Spalten sind, werden die eindeutigen Spalten als Primärschlüssel verwendet, wenn und nur dann, wenn alle eindeutigen Spalten nicht ullierbar sind. Wenn eine der Spalten nullwertebar ist, wird eine UniqueConstraint der ConstraintCollectionSpalten hinzugefügt, die Eigenschaft wird jedoch PrimaryKey nicht festgelegt.
Wenn sowohl Primärschlüsselspalten als auch eindeutige Spalten zurückgegeben werden, werden die Primärschlüsselspalten als Primärschlüsselspalten für die DataTable.
Beachten Sie, dass Primärschlüssel und eindeutige Einschränkungen den ConstraintCollection vorherigen Regeln hinzugefügt werden, andere Einschränkungstypen werden jedoch nicht hinzugefügt.
Wenn ein eindeutiger gruppierter Index für eine Spalte oder Spalten in einer SQL Server-Tabelle definiert ist und die Primärschlüsseleinschränkung für einen separaten Satz von Spalten definiert wird, werden die Namen der Spalten im gruppierten Index zurückgegeben. Um den Namen oder die Namen der Primärschlüsselspalten zurückzugeben, verwenden Sie einen Abfragehinweis mit der SELECT-Anweisung, die den Namen des Primärschlüsselindex angibt. Weitere Informationen zum Angeben von Abfragehinweisen finden Sie unter Hinweise (Transact-SQL) – Abfrage.
Primärschlüsselinformationen werden während des Fill Suchens und Ersetzens von Zeilen verwendet, deren Schlüsselspalten übereinstimmen. Wenn dies nicht das gewünschte Verhalten ist, verwenden Sie diese Option Fill , ohne Schemainformationen anzufordern.
Wenn beim IDataAdapter Auffüllen doppelter DataTableSpalten doppelte Spalten auftreten, generiert sie Namen für die nachfolgenden Spalten, wobei das Muster "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt. Wenn dem resultset mehrere Resultsets hinzugefügt DataSet werden, wird in einer separaten Tabelle platziert. Zusätzliche Resultsets werden durch Anfügen integraler Werte an den angegebenen Tabellennamen benannt (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.). Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.
Das IDbConnection dem Auswahlbefehl zugeordnete Objekt muss gültig sein, muss aber nicht geöffnet werden. Wenn die IDbConnection Datei vor dem FillSchema Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor FillSchema sie aufgerufen wird, bleibt sie geöffnet.
Hinweis
Bei der Verarbeitung von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung FillSchema des .NET Framework-Datenanbieters für OLE DB Schemainformationen nur für das erste Ergebnis ab. Verwenden Sie Fill zum Abrufen von Schemainformationen für mehrere Ergebnisse den MissingSchemaAction Satz auf AddWithKey.
Bei Verwendung FillSchemafügt der .NET Framework-Datenanbieter für SQL Server eine FOR BROWSE-Klausel an die auszuführende Anweisung an. Der Benutzer sollte sich potenzielle Nebenwirkungen bewusst sein, wie z. B. Störungen bei der Verwendung von SET FMTONLY ON-Anweisungen. Weitere Informationen finden Sie unter SET FMTONLY (Transact-SQL).