Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Unter ADO.NET gibt es typisierte und untypisierte DataSets. In den bisherigen Artikeln haben Sie meist mit untypisierten DataSets gearbeitet. Das heißt, dass Sie alle benötigten Objekte per Code erzeugt und dabei auch Verbindungseigenschaften, SQL-Anweisungen et cetera übergeben haben. Bei typisierten DataSets definieren Sie die meisten Eigenschaften des später im Code verwendeten DataSets über einen Assistenten. Dies gelingt durch einige Klassen, die vom Assistenten automatisch erzeugt werden und mit deren Hilfe Sie später direkt per IntelliSense auf die enthaltenen Tabellen und Felder zugreifen können.
Doch eins nach dem anderen: Wir wollen zunächst einmal den zuständigen Assistenten bemühen, um ein typisiertes DataSet auf Basis zweier Tabellen der Beispieldatenbank –Suedsturm.mdb zu erzeugen. Später zeigen wir dann, welche Möglichkeiten das typisierte DataSet gegenüber seinem nicht typisierten Pendant liefert.
Datenquelle hinzufügen
Wir wollen die beiden Tabellen tblArtikel, tblKategorien und tblLieferanten zum DataSet hinzufügen. Um dies zu erledigen, zeigen Sie zunächst mit dem Menüeintrag Ansicht|Server-Explorer den Server-Explorer an, der auch einen Eintrag namens Datenverbindungen enthält. Wählen Sie den Eintrag Verbindung hinzufügen… aus dem Kontextmenü dieses Eintrags aus.
Es erscheint nun der Dialog Datenquelle auswählen, der verschiedene Datenquellentypen anzeigt. Wählen Sie hier den Typ Microsoft Access-Datenbankdateien aus und klicken Sie auf Weiter (siehe Bild 1).
Im folgenden Schritt geben Sie die konkrete Access-Datenbankdatei an. Testen Sie die Verbindung, indem Sie auf Testverbindung klicken. Liefert dies keinen Fehler, beenden Sie den Assistenten mit einem Klick auf die Schaltfläche OK (siehe Bild 2).
Im Anschluss finden Sie im Server-Explorer unter Datenverbindungen einen neuen Eintrag namens Suedsturm.mdb vor. Wenn Sie diesen Eintrag erweitern, finden Sie schnell heraus, dass auch alle enthaltenen Tabellen zur Verfügung stehen (siehe Bild 3).
Typisiertes DataSet Erstellen
Wählen Sie nun den Menüeintrag Projekt|Neues Element hinzufügen… aus, erscheint der Dialog Neues Element hinzufügen. Mit diesem wählen Sie nun die Kategorie Visual C#-Elemente|Daten aus und klicken dann auf das Element DataSet. Tragen Sie als Name Suedsturm_DataSet.xsd ein und klicken Sie auf Hinzufügen (siehe Bild 4).
Das neue Objekt Suedsturm_DataSet.xsd wird nun im Designer in Visual Studio angezeigt. Aktivieren Sie nun den Server-Explorer, sodass dieser neben dem neuen Objekt Suedsturm_DataSet.xsd zu sehen ist.
Nun ziehen Sie die Tabellen tblArtikel, tblLieferanten und tblKategorien aus dem Server-Explorer in den Entwurf des DataSets. Direkt beim Versuch, die erste Tabelle hinüberzuziehen, sollte die Meldung aus Bild 5 erscheinen. Wenn Sie hier auf Ja klicken, wird die verwendete Datenbankdatei Suedsturm.mdb zum Projekt hinzugefügt.
Danach geht es los: Ziehen Sie die drei Tabellen in den Entwurf des DataSets und Sie erhalten die Konstellation aus Bild 6. Die Tabellen werden mit allen enthaltenen Feldern genau wie im Beziehungs-Fenster von Access angezeigt – nicht einmal die Beziehungspfeile fehlen. Ein wichtiger Unterschied ist jedoch, dass jede Tabelle unten ein weiteres Objekt etwa namens tblArtikelTableAdapter enthält, das die beiden Methoden Fill und GetData anbietet.
Nicht alle Felder einer Tabelle verwenden
Wie Sie sehen, wurden die Tabellen vollständig in das DataSet übernommen – wie soll es auch anders sein, wenn Sie die kompletten Tabellen hinüber ziehen Andererseits kann es ja auch einmal vorkommen, dass Sie nicht alle Felder einer Tabelle verwenden möchten. In diesem Fall klappen Sie das Tabellen-Element im Server-Explorer so auf, dass Sie die einzelnen Feldnamen der Tabelle sehen. Hier wählen Sie nun entweder bei gedrückter Umschalt- oder Strg-Taste die gewünschten Felder aus. Bei gedrückter Umschalttaste markieren Sie alle Felder zwischen dem zuerst und dem zuletzt angeklickten Feld, mit gedrückter Strg-Taste aktivieren oder deaktivieren Sie einzelne Einträge. In diesem Fall wollen wir jedoch alle Felder der Tabellen nutzen.
Vom Assistenten erzeugte Elemente