Freigeben über


Überprüfen von Daten in Datasets

 

Veröffentlicht: August 2016

Bei der Datenüberprüfung wird kontrolliert, ob die in Datenobjekte eingegebenen Werte mit den Einschränkungen in einem Dataset-Schema und den für Ihre Anwendung geltenden Regeln konform sind. Mit Datenüberprüfungen vor dem Senden von Aktualisierungen an die zugrunde liegende Datenbank können Fehler und die mögliche Anzahl von Schleifen zwischen einer Anwendung und der Datenbank reduziert werden. Die Gültigkeit der in ein Dataset geschriebenen Daten kann bestätigt werden, indem Sie direkt im Dataset Validierungen implementieren. Die Daten können dann vom Dataset überprüft werden, und zwar unabhängig davon, wie die Aktualisierung erfolgt: direkt über Steuerelemente in einem Formular, innerhalb einer Komponente oder auf andere Weise. Da das Dataset Teil Ihrer Anwendung ist, bietet es die nächstliegende Möglichkeit für die Integration anwendungsspezifischer Validierungen (im Gegensatz zur Integration dieser Überprüfungen in das Datenbank-Back-End).

Wenn Sie die Datenvalidierung in der Anwendung verwenden möchten, sollten Sie sie der Datei der partiellen Klasse des Datasets hinzufügen. Öffnen Sie in Visual Basic oder Visual C# den DataSet-Designer, und doppelklicken Sie auf die Spalte oder die Tabelle, die Sie überprüfen möchten. Dadurch wird automatisch ein ColumnChanging-Ereignishandler oder ein RowChanging-Ereignishandler erstellt. Weitere Informationen finden Sie unter Gewusst wie: Validieren von Daten während Spaltenänderungen oder Gewusst wie: Validieren von Daten während Zeilenänderungen. Ein vollständiges Beispiel finden Sie unter Exemplarische Vorgehensweise: Hinzufügen von Validierung zu einem DataSet.

Überprüfen von Daten

Validierungen können in einem Dataset wie folgt implementiert werden:

Sobald eine Änderung in einem Datensatz auftritt, werden mehrere Ereignisse vom DataTable-Objekt ausgelöst:

Standardmäßig werden demnach bei jeder Änderung an einer Spalte vier Ereignisse ausgelöst: zuerst das ColumnChanging-Ereignis und das ColumnChanged-Ereignis für die jeweils geänderte Spalte und dann das RowChanging-Ereignis und das RowChanged-Ereignis. Falls die Zeile mehrfach geändert wird, werden die Ereignisse für jede einzelne Änderung ausgelöst.

Hinweis

Die BeginEdit-Methode der Datenzeile deaktiviert die Ereignisse RowChanging und RowChanged nach jeder einzelnen Spaltenänderung. Wenn die Ereignisse RowChanging und RowChanged nur einmal auftreten, wird das Ereignis erst ausgelöst, nachdem die EndEdit-Methode aufgerufen wurde. Weitere Informationen finden Sie unter Gewusst wie: Deaktivieren von Einschränkungen beim Auffüllen von Datasets.

Welches Ereignis Sie verwenden, richtet sich danach, mit welcher Detailgenauigkeit die Validierung erfolgen soll. Wenn ein Fehler direkt während einer Spaltenänderung abgefangen werden muss, richten Sie die Validierung unter Verwendung des ColumnChanging-Ereignisses ein. Andernfalls verwenden Sie das RowChanging-Ereignis, wodurch mehrere Fehler auf einmal abgefangen werden können. Auch wenn die Daten so strukturiert sind, dass der Wert einer Spalte basierend auf dem Inhalt einer anderen Spalte validiert wird, sollten Sie die Validierung mit dem RowChanging-Ereignis durchführen.

Bei der Aktualisierung von Datensätzen löst das DataTable-Objekt Ereignisse aus, auf die Sie reagieren können, während die Änderungen vorgenommen werden und nachdem sie abgeschlossen sind.

Wenn Ihre Anwendung ein typisiertes Dataset verwendet, können Sie stark typisierte Ereignishandler erstellen. Dadurch werden vier zusätzliche typisierte Ereignisse hinzugefügt, für die Sie Handler erstellen können: dataTableNameRowChanging, dataTableNameRowChanged, dataTableNameRowDeleting und dataTableNameRowDeleted. Durch diese typisierten Ereignishandler wird ein Argument übergeben, das die Spaltennamen der Tabelle enthält. Dadurch wird die Lesbarkeit und das Schreiben von Code vereinfacht.

Datenaktualisierungsereignisse

Ereignis Description
ColumnChanging Der Wert in einer Spalte wird gerade geändert. Das Ereignis übergibt Zeile und Spalte zusammen mit dem vorgeschlagenen neuen Wert.
ColumnChanged Der Wert in einer Spalte wurde geändert. Das Ereignis übergibt Zeile und Spalte zusammen mit dem vorgeschlagenen Wert.
RowChanging An einem DataRow-Objekt vorgenommene Änderungen stehen kurz davor, mit einem Commit wieder in das Dataset geschrieben zu werden. Wenn Sie die BeginEdit-Methode nicht aufgerufen haben, wird das RowChanging-Ereignis direkt nach Auslösen des ColumnChanging-Ereignisses für jede Spaltenänderung aufgerufen. Wenn Sie BeginEdit vor der Durchführung von Änderungen aufgerufen haben, wird das RowChanging-Ereignis nur beim Aufrufen der EndEdit-Methode ausgelöst.

Durch das Ereignis wird die Zeile sowie ein Wert übergeben, der die jeweils ausgeführte Aktion (Änderung, Einfügung usw.) angibt.
RowChanged Eine Zeile wurde geändert. Durch das Ereignis wird die Zeile sowie ein Wert übergeben, der die jeweils ausgeführte Aktion (Änderung, Einfügung usw.) angibt.
RowDeleting Eine Zeile wird gerade gelöscht. Durch das Ereignis wird die Zeile sowie ein Wert übergeben, der die jeweils ausgeführte Aktion (Löschen) angibt.
RowDeleted Eine Zeile wurde gelöscht. Durch das Ereignis wird die Zeile sowie ein Wert übergeben, der die jeweils ausgeführte Aktion (Löschen) angibt.

Die Ereignisse ColumnChanging, RowChanging und RowDeleting werden während des Aktualisierungsprozesses ausgelöst. Sie können diese Ereignisse verwenden, um Daten zu überprüfen oder anderweitig zu verarbeiten. Da die Aktualisierung während dieser Ereignisse bereits läuft, können Sie sie abbrechen, indem Sie eine Ausnahme auslösen. Der Änderungsvorgang wird in diesem Fall nicht abgeschlossen.

Die Ereignisse ColumnChanged, RowChanged und RowDeleted dienen zur Benachrichtigung und werden ausgelöst, nachdem die Aktualisierung erfolgreich abgeschlossen wurde. Diese Ereignisse sind von Nutzen, wenn auf der Grundlage einer erfolgreichen Aktualisierung weitere Aktionen ausgeführt werden sollen.

Siehe auch

Erstellen und Bearbeiten von typisierten Datasets
Gewusst wie: Herstellen einer Verbindung zu Daten in einer Datenbank
Gewusst wie: Überprüfen von Daten im DataGridView-Steuerelement in Windows Forms
Gewusst wie: Anzeigen von Fehlersymbolen für die Formularvalidierung mit der ErrorProvider-Komponente in Windows Forms