Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Fill-Methode des DataAdapter-Objekts füllt ein DataSet nur mit den Tabellenspalten und -zeilen aus einer Datenquelle. Einschränkungen werden zwar häufig von der Datenquelle festgelegt, die Fill-Methode fügt diese Schemainformationen dem DataSet jedoch nicht standardmäßig hinzu. Wenn Sie die Informationen zu bestehenden Primärschlüsseleinschränkungen aus einer Datenquelle in ein DataSet übernehmen möchten, können Sie entweder die FillSchema-Methode des DataAdapter-Objekts aufrufen oder für die MissingSchemaAction-Eigenschaft des DataAdapter-Objekts den Wert AddWithKey festlegen, bevor Sie die Fill-Methode aufrufen. Dadurch wird sichergestellt, dass die Primärschlüsseleinschränkungen im DataSet jenen in der Datenquelle entsprechen. Informationen zu Fremdschlüsseleinschränkungen sind nicht enthalten und müssen explizit erstellt werden, wie unter Hinzufügen von Einschränkungen zu einer Tabelle beschrieben.
Wenn Sie einem DataSet Schemainformationen hinzufügen, bevor Sie es mit Daten füllen, wird sichergestellt, dass Primärschlüsseleinschränkungen in den DataTable-Objekten des DataSets enthalten sind. Folglich werden mit den Informationen zur Primärschlüsselspalte bei weiteren Aufrufen der Fill-Methode für das DataSet neue Zeilen aus der Datenquelle mit aktuellen Zeilen in jeder DataTable abgestimmt. Die aktuellen Daten in den Tabellen werden mit Daten aus der Datenquelle überschrieben. Ohne die Schemainformationen werden die neuen Zeilen aus der Datenquelle dem DataSet angehängt. Das Ergebnis sind Duplikatzeilen.
Hinweis Wenn in einer Datenquelle eine AutoIncrement-Spalte ermittelt wird, erstellt die FillSchema-Methode bzw. die Fill-Methode, deren MissingSchemaAction-Eigenschaft den Wert AddWithKey aufweist, eine DataColumn, für deren AutoIncrement-Eigenschaft True angegeben ist. Die Werte für AutoIncrementStep und AutoIncrementSeed müssen Sie jedoch selbst festlegen. Weitere Informationen zu Spalten, deren Werte sich automatisch erhöhen, finden Sie unter Erstellen von AutoIncrement-Spalten.
Wenn Sie die FillSchema-Methode verwenden oder für MissingSchemaAction den Wert AddWithKey festlegen, sind zusätzliche Verarbeitungsschritte an der Datenquelle erforderlich, um Informationen zur Primärschlüsselspalte zu ermitteln. Diese zusätzlichen Verarbeitungsschritte können zu Leistungseinbußen führen. Wenn Sie die Primärschlüsselinformationen zur Entwurfszeit kennen, empfiehlt es sich, die Primärschlüsselspalte(n) explizit in der richtigen Reihenfolge anzugeben, um eine optimale Leistung zu erzielen. Weitere Informationen zum expliziten Festlegen von Primärschlüsselinformationen für eine Tabelle finden Sie unter Definieren eines Primärschlüssels für eine Tabelle.
Das folgende Codebeispiel zeigt, wie Sie einem DataSet mit Hilfe der FillSchema-Methode Schemainformationen hinzufügen.
Dim custDS As DataSet = New DataSet()
custDA.FillSchema(custDS, SchemaType.Source, "Customers")
custDA.Fill(custDS, "Customers")
[C#]
DataSet custDS = new DataSet();
custDA.FillSchema(custDS, SchemaType.Source, "Customers");
custDA.Fill(custDS, "Customers");
Das folgende Codebeispiel zeigt, wie Sie einem DataSet mit der MissingSchemaAction.AddWithKey-Eigenschaft der Fill-Methode Schemainformationen hinzufügen.
Dim custDS As DataSet = New DataSet()
custDA.MissingSchemaAction = MissingSchemaAction.AddWithKey
custDA.Fill(custDS, "Customers")
[C#]
DataSet custDS = new DataSet();
custDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
custDA.Fill(custDS, "Customers");
Mehrere Resultsets
Wenn das DataAdapter-Objekt feststellt, dass mehrere Resultsets von der SelectCommand-Eigenschaft zurückgegeben werden, werden mehrere Tabellen im DataSet erstellt. Diesen Tabellen werden standardmäßig Namen nach dem Schema TabelleN, beginnend mit "Tabelle" für Tabelle0, zugewiesen, die jeweils um eins erhöht werden. Wenn der Tabellenname als Argument an die FillSchema-Methode übergeben wird, erhalten die Tabellen standardmäßig Namen nach dem Schema TabellennameN, beginnend mit "Tabellenname" für Tabellenname0, die jeweils um eins erhöht werden.
Hinweis Wenn die FillSchema-Methode des OleDbDataAdapter-Objekts für einen Befehl aufgerufen wird, der mehrere Resultsets zurückgibt, werden nur die Schemainformationen aus dem ersten Resultset zurückgegeben. Wenn Schemainformationen für mehrere Resultsets mit dem OleDbDataAdapter zurückgegeben werden, empfiehlt es sich, eine MissingSchemaAction-Eigenschaft von AddWithKey anzugeben und die Schemainformationen beim Aufruf der Fill-Methode abzurufen.