Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 6. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Das Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Strukturen und Enumerationen
7 Fehlerbehandlung und Debugging
8 Auflistungsklassen (Collections)
9 Generics – Generische Datentypen
10 Weitere C#-Sprachfeatures
11 LINQ
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 XML
15 Multithreading und die Task Parallel Library (TPL)
16 Einige wichtige .NET-Klassen
17 Projektmanagement und Visual Studio 2012
18 Einführung in die WPF und XAML
19 WPF-Layout-Container
20 Fenster in der WPF
21 WPF-Steuerelemente
22 Elementbindungen
23 Konzepte von WPF
24 Datenbindung
25 Weitere Möglichkeiten der Datenbindung
26 Dependency Properties
27 Ereignisse in der WPF
28 WPF-Commands
29 Benutzerdefinierte Controls
30 2D-Grafik
31 ADO.NET – Verbindungsorientierte Objekte
32 ADO.NET – Das Command-Objekt
33 ADO.NET – Der SqlDataAdapter
34 ADO.NET – Daten im lokalen Speicher
35 ADO.NET – Aktualisieren der Datenbank
36 Stark typisierte DataSets
37 Einführung in das ADO.NET Entity Framework
38 Datenabfragen des Entity Data Models (EDM)
39 Entitätsaktualisierung und Zustandsverwaltung
40 Konflikte behandeln
41 Plain Old CLR Objects (POCOs)
Stichwort

Download:
- Beispiele, ca. 62,4 MB

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Visual C# 2012 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2012

Visual C# 2012
Rheinwerk Computing
1402 S., 6., aktualisierte und erweiterte Auflage 2013, geb., mit DVD
49,90 Euro, ISBN 978-3-8362-1997-6
Pfeil 36 Stark typisierte DataSets
Pfeil 36.1 Ein stark typisiertes DataSet erzeugen
Pfeil 36.1.1 Typisierte DataSets mit dem Visual Studio Designer erstellen
Pfeil 36.1.2 Das Kommandozeilentool XSD.exe
Pfeil 36.2 Die Anatomie eines typisierten DataSets
Pfeil 36.2.1 Die Datenzeilen einer Tabelle ausgeben
Pfeil 36.2.2 Datenzeilen hinzufügen
Pfeil 36.2.3 Datenzeilen bearbeiten
Pfeil 36.2.4 Datenzeilen suchen
Pfeil 36.2.5 NULL-Werte im typisierten DataSet
Pfeil 36.2.6 Die Daten in einem hierarchischen DataSet
Pfeil 36.3 Typisierte DataSets manuell im Designer erzeugen
Pfeil 36.3.1 Eine »DataTable« manuell erzeugen
Pfeil 36.3.2 Der »DataTable« Spalten hinzufügen
Pfeil 36.3.3 Beziehungen zwischen den Tabellen erstellen
Pfeil 36.4 Weiter gehende Betrachtungen
Pfeil 36.5 Der »TableAdapter«
Pfeil 36.5.1 Einen »TableAdapter« mit Visual Studio erzeugen
Pfeil 36.5.2 Die Methode »Fill« des »TableAdapters«
Pfeil 36.5.3 Die Methode »GetData«
Pfeil 36.5.4 Die Methode »Update«
Pfeil 36.5.5 Aktualisieren mit den DBDirect-Methoden
Pfeil 36.5.6 TableAdapter mit mehreren Abfragen
Pfeil 36.5.7 Änderungen an einem »TableAdapter« vornehmen
Pfeil 36.6 Fazit: Typisierte oder nicht typisierte DataSets?

36 Stark typisierte DataSetsZur nächsten Überschrift

In den beiden vorangegangenen Kapiteln haben Sie alles Wesentliche im Zusammenhang mit der Klasse DataSet erfahren. Grundsätzlich wird aber zwischen zwei verschiedenen DataSets unterschieden: dem untypisierten DataSet und dem typisierten DataSet. Das untypisierte DataSet war der Schwerpunkt aller bisherigen Ausführungen. In diesem Kapitel werde ich Ihnen die typisierten DataSets vorstellen und dabei zeigen, welche Stärken und Schwächen diese Gruppe aufweist. Dabei werden wir auch den Designer von Visual Studio verwenden.

Wenn Sie ein typisiertes DataSet erzeugen, werden auch automatisch TableAdapter angelegt. Hierbei handelt es sich um typisierte DataAdapter, über die Sie eine DataTable mit Daten aus der Datenbank füllen und die Aktualisierungen wieder zurückschreiben können.


Rheinwerk Computing - Zum Seitenanfang

36.1 Ein stark typisiertes DataSet erzeugenZur nächsten ÜberschriftZur vorigen Überschrift

Lassen Sie uns zunächst einmal ganz allgemein formulieren, was ein typisiertes DataSet ist. Ein stark typisiertes DataSet ist eine Klassendefinition, die von der Klasse DataSet abgeleitet ist. Es enthält Eigenschaften und Methoden, die auf der Struktur der Datenbankabfrage basieren. Darüber hinaus sind in einem typisierten DataSet Klassen für die DataTable- und DataRow-Objekte definiert.

Es bieten sich zwei Wege an, um ein stark typisiertes DataSet zu erzeugen:

  • Sie benutzen den Designer von Visual Studio.
  • Sie verwenden das Befehlszeilendienstprogramm XSD.exe.

Der einfachere Weg ist natürlich der über den Designer, den ich Ihnen auch als ersten vorstellen möchte.


Rheinwerk Computing - Zum Seitenanfang

36.1.1 Typisierte DataSets mit dem Visual Studio Designer erstellenZur nächsten ÜberschriftZur vorigen Überschrift

An einem Beispiel möchte ich Ihnen zeigen, wie Sie auf einfache Weise ein typisiertes DataSet erzeugen. Das typisierte DataSet soll die beiden Tabellen Products und Categories beschreiben. Aus der Tabelle Products interessieren uns dabei die Spalten ProductID, CategoryID, ProductName und UnitPrice, aus Categories die Spalten CategoryID und CategoryName.

Nachdem Sie ein neues Projekt angelegt haben, fügen Sie über den Projektmappen-Explorer ein neues Element hinzu. Markieren Sie dazu den Knoten des Projekts im Projektmappen-Explorer, öffnen Sie dessen Kontextmenü, und wählen Sie Neues Element hinzufügen. Im sich öffnenden Dialogfenster wählen Sie die Vorlage DataSet aus und geben dem Element einen passenden Namen. Ich habe mich hier für NWDataSet.xsd entschieden (siehe Abbildung 36.1).

Abbildung

Abbildung 36.1 Dem Projekt ein typisiertes DataSet hinzufügen

Im Designer wird nun ein leeres Fenster angezeigt, dem die gewünschten Tabellen hinzugefügt werden müssen. Dazu setzen wir den Server-Explorer ein, dem wir die benötigte Datenbankverbindung zuvor noch hinzufügen müssen. Sollten Sie das Fenster des Server-Explorers nicht sehen, können Sie es über das Menü Ansicht öffnen.

Ganz oben im Server-Explorer sehen Sie den Knoten Datenverbindungen. Markieren Sie diesen Knoten, und wählen Sie in dessen Kontextmenü den Eintrag Verbindung hinzufügen. Es wird daraufhin der gleichnamige Dialog angezeigt. Achten Sie darauf, dass im Feld Datenquelle »Microsoft SQL Server (SqlClient)« eingetragen ist. Wenn das nicht der Fall ist, können Sie über die Schaltfläche Ändern die Datenquelle wechseln.

Geben Sie nun den Servernamen an. Sollte sich der Datenbankserver auf der lokalen Maschine befinden, reicht die Angabe eines Punktes (.). Gleichwertig können Sie auch »(local)« eintragen, einschließlich der runden Klammern. Vielleicht haben Sie auch die Northwind-Datenbank in einer benannten Instanz von SQL Server installiert, beispielsweise SQLExpress. Geben Sie dann den Instanzbezeichner von SQL Server getrennt durch ein »\«-Zeichen hinter dem Rechnernamen an, z. B. »(local)\SQLExpress«.

Als Authentifizierungsinformation wird per Vorgabe die Windows-Anmeldung vorselektiert. Wollen Sie die SQL Server-Anmeldung verwenden, müssen Sie auch Benutzernamen und Kennwort eintragen. Diese Option führt natürlich auch nur dann zum Erfolg, wenn der SQL Server die SQL Server-Authentifizierung unterstützt. Wählen Sie zum Schluss noch die gewünschte Datenbank aus, und testen Sie die Verbindung über die Schaltfläche Testverbindung. Danach können Sie die Einstellungen mit OK bestätigen.

Wenn Sie alles richtig gemacht haben, wird die Datenbankverbindung nun im Server-Explorer angezeigt. Erweitern Sie deren Knoten, werden alle Elemente der Northwind-Datenbank angezeigt (Tabellen, Ansichten, Typen usw.).

Abbildung

Abbildung 36.2 Der Server-Explorer

Aus dem Server-Explorer heraus können Sie eine markierte Tabelle in den Designer des typisierten DataSets ziehen. Dann wären alle Spalten der Tabelle Elemente des typisierten DataSets. Da wir uns vorgenommen haben, nur bestimmte Spalten hinzuzufügen, öffnen wir den Knoten der entsprechenden Tabelle und markieren nur die gewünschten Spalten. Halten Sie dabei die Strg-Taste gedrückt. Ziehen Sie nun die markierten Spalten in den Designer. Haben Sie die ausgewählten Spalten der ersten Tabelle (z. B. Products) in den Designer gezogen, markieren Sie die erforderlichen Spalten der Tabelle Categories im Server-Explorer und ziehen diese ebenfalls in den Designer. Das Resultat sollte dann so aussehen wie in Abbildung 36.3.

Abbildung

Abbildung 36.3 Das typisierte DataSet im Designer

Das war bereits alles. Wie Sie in der Abbildung sehen können, erkennt der Designer, dass zwischen den beiden Tabellen Categories und Products eine Beziehung existiert, und fügt diese auch automatisch hinzu.

Sie sollten jetzt noch einen Blick in den Projektmappen-Explorer wagen. Die Schemadatei für das typisierte DataSet ist hier als NWDataSet.xsd eingetragen. Wenn Sie sich alle Dateien im Projektmappen-Explorer anzeigen lassen (klicken Sie dazu auf die entsprechende Symbolleistenschaltfläche im Projektmappen-Explorer), erkennen Sie, dass der XSD-Datei drei Dateien untergeordnet sind: NWDataSet.Designer.cs, NWDataSet.xsc und NWDataSet.xss. Die beiden letzteren interessieren uns nicht, denn hierbei handelt es sich nur um Dateien, die den Designer unterstützen. Die CS-Datei werden wir aber gleich noch genauer unter die Lupe nehmen.


Rheinwerk Computing - Zum Seitenanfang

36.1.2 Das Kommandozeilentool XSD.exeZur vorigen Überschrift

Aufwendiger ist der Weg über das Kommandozeilentool xsd.exe. Obwohl Sie vermutlich nur selten darauf zurückgreifen werden, möchte ich es Ihnen an dieser Stelle kurz vorstellen. Intern wird es natürlich auch vom Designer benutzt, den Sie im letzten Abschnitt kennengelernt haben. Um ein typisiertes DataSet mit dem Tool zu erzeugen, müssen wir zuerst ein nicht typisiertes DataSet bereitstellen, in dem alle Schemainformationen enthalten sind. Damit auch die DataRelation zwischen den Tabellen Products und Categories richtig erkannt wird, müssen wir die Beziehung mittels Code beschreiben. Alle anderen Metadaten besorgen wir uns über die Methode FillSchema. Zum Schluss rufen wir die Methode WriteXmlSchema des DataSets auf und schreiben die Schemainformationen in eine XSD-Datei.

SqlConnection con = new SqlConnection();
con.ConnectionString = "...";
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT ... FROM Products; " +
"SELECT ... FROM Categories";
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.FillSchema(ds, SchemaType.Source);
DataColumn colDetail = ds.Tables[0].Columns["CategoryID"];
DataColumn colMaster = ds.Tables[1].Columns["CategoryID"];
DataRelation rel = new DataRelation("KategorieProdukte",
colMaster, colDetail);
ds.Relations.Add(rel);
ds.WriteXmlSchema(@"D:\DataSetSchema.xsd");

Listing 36.1 Schemainformationen in eine Schemadatei schreiben

Nun wollen wir das Tool xsd.exe dazu benutzen, um aus der Schemadatei eine Datei zu generieren, die das typisierte DataSet enthält. Es wird sich dabei um eine Datei mit der Dateierweiterung .cs handeln.

Rufen Sie das Tool an der Kommandozeile auf, und übergeben Sie ihm im ersten Parameter die zuvor erzeugte Schemadatei. Dem zweiten Parameter übergeben Sie »/dataset«, also:

xsd.exe DataSetSchema.xsd /dataset 

Damit ist eine Klassendatei für das typisierte DataSet erzeugt worden, die Sie nun in andere Projekte einfügen und nutzen können.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Visual C# 2012

Visual C# 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Rheinwerk-Shop: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: C/C++






 C/C++


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern