Kapitel 1 Einstieg in ADO.NET In diesem Kapitel: Überblick über die Zusammenhänge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Das ADO.NET-Objektmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Ein einfaches datengebundenes Formular erstellen . . . . . . . . . . . . . . . . . 26 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 In diesem Kapitel lernen Sie, wie Sie 쐽 die wichtigsten Objekte von Microsoft ADO.NET und deren Interaktion nutzen. 쐽 mit dem Assistenten zum Konfigurieren von Datenquellen eine Datenquelle erstellen. 쐽 mit dem Fenster »Datenquelle« ein einfaches datengebundenes Formular anlegen. Wie die anderen Komponenten des Microsoft .NET Frameworks besteht auch Microsoft ADO.NET aus Objekten, die die benötigte Funktionalität dadurch bereitstellen, dass sie miteinander interagieren. Leider kann durch diese Interaktion leicht der Eindruck entstehen, dass man zuerst das gesamte Modell kennen muss, bevor man einzelne Teile davon verstehen kann. Die Verwendung des Objektmodells kann daher u. U. frustrierend sein. Die Lösung dieses Problems besteht in der Bildung eines konzeptionellen Rahmens. Mit anderen Worten, bevor Sie sich mit den speziellen Funktionen eines Objekts befassen, sollten Sie den Verwendungszweck der einzelnen Objekte und ihre Interaktion kennen lernen. Dies geschieht in diesem Kapitel. Zunächst werden die zentralen ADO.NET-Objekte vorgestellt, und es wird gezeigt, wie die Objekte zusammenarbeiten, um Daten aus einem physischen Datenspeicher abzurufen, diese dem Datenkonsumenten zur Verfügung zu stellen und Daten im Datenspeicher abzulegen. Überblick über die Zusammenhänge Microsoft Visual Studio 2005 und Microsoft .NET Framework 2.0 erleichtern die Erstellung einfacher datengebundener Formulare enorm. Es ist jetzt ohne jede Programmierung möglich, ein Microsoft Windows Form zu erstellen, das grundlegende Datenbearbeitungsfunktionen bereitstellt, in dem also Datenelemente angezeigt und bearbeitet, die Zeilen einer Tabelle durchsucht, neue Zeilen hinzugefügt und vorhandene Zeilen gelöscht werden können. Ein Beispiel hierfür wird weiter hinten in diesem Kapitel vorgestellt. Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) 22 Teil A: Einführung in ADO.NET Hinweis Text wie dieser verweist Sie auf die Stelle, an der Sie eine ausführliche Beschreibung der Methode oder Eigenschaft finden, die bisher noch nicht erklärt wurde. In späteren Kapiteln werden nacheinander die einzelnen Objekte des ADO.NET-Objektmodells beschrieben – zumindest theoretisch. Weil die Objekte so eng miteinander verbunden sind, ist es eigentlich unmöglich, sie isoliert zu betrachten. Falls eine Methode oder eine Eigenschaft eingesetzt werden muss, die noch nicht beschrieben wurde, finden Sie einen entsprechenden Hinweis in der Marginalspalte, dem Sie entnehmen können, welches Kapitel eine ausführlichere Beschreibung enthält. Das ADO.NET-Objektmodell Die folgende Abbildung 1.1 enthält eine vereinfachte Darstellung der zentralen Objekte des ADO.NET-Objektmodells. Natürlich ist die Klassenbibliothek in Wirklichkeit wesentlich komplizierter, auf die Feinheiten gehen wir jedoch später ein. Momentan reicht es aus, wenn Sie die zentralen Objekte kennen und wissen, wie diese üblicherweise miteinander interagieren. ADO.NET Datenkonsumenten Datenprovider Adapter Connection DataSet Command Reader WinForm WebForm Andere Provider Abbildung 1.1 Das ADO.NET-Objektmodell Die Klassen von ADO.NET lassen sich in zwei Komponenten unterteilen: Die Datenprovider (gelegentlich auch Managed Provider genannt), die für die Kommunikation mit einem physischen Datenspeicher zuständig sind, und das DataSet, das die eigentlichen Daten repräsentiert. Jede Komponente kann mit Datenkonsumenten wie WebFormsund Windows Forms kommunizieren Datenprovider Die Datenprovider-Komponenten sind jeweils auf eine Datenquelle zugeschnitten. Das .NET Framework beinhaltet vier Datenprovider: 1. einen allgemeinen Provider, der mit jeder OLE DB-Datenquelle kommunizieren kann, 2. einen SQL Server-Provider, der auf Microsoft SQL Server 7.0 und höher zugeschnitten ist, Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) Kapitel 1: Einstieg in ADO.NET 3. einen ODBC-Provider, der für ODBC-Datenquellen optimiert wurde, 4. einen Oracle-Provider, der für Oracle-Datenbanken optimiert wurde. 23 Zudem können Sie selbst Datenprovider erstellen. (Sie werden wahrscheinlich erleichtert sein, wenn Sie erfahren, dass die Erstellung von Providern in diesem Buch nicht behandelt wird.) Die im .NET Framework enthaltenen Datenprovider beinhalten zwar dieselben Objekte, ihre Namen und einige ihrer Eigenschaften und Methoden unterscheiden sich jedoch. Beispielsweise heißt das SQL Server-Objekt, das eine Datenbankverbindung repräsentiert, SQLConnection, wohingegen das entsprechende OLE DB-Objekt OleDbConnection heißt. Hinweis Verbindungen werden in Kapitel 2 eingehend behandelt. Das Connection-Objekt repräsentiert die physische Verbindung zu einer Datenquelle. Seine Eigenschaften legen den Datenprovider (beim OLE DB-Provider), die Datenquelle, die Datenbank, zu der eine Verbindung hergestellt wird und die Zeichenfolge fest, die zum Aufbau der Verbindung benutzt wird. Die Methoden sind recht einfach: Eine Verbindung kann hergestellt und beendet werden; die Datenbank kann gewechselt werden und Transaktionen können verwaltet werden. Hinweis Command-Objekte werden in Kapitel 3 detaillierter beschrieben. Das Command-Objekt repräsentiert eine SQL-Anweisung oder eine gespeicherte Prozedur, die auf die Datenquelle angewendet werden kann. Command-Objekte können erstellt und voneinander unabhängig auf ein Connection-Objekt angewendet werden. DataAdapter- und TableAdapter-Objekte verwalten mithilfe von Command-Objekten die Kommunikation zwischen einem DataSet und einer Datenquelle. Command-Objekte unterstützen SQL-Anweisungen und gespeicherte Prozeduren, die einzelne Werte, eine oder mehrere Zeilen oder gar keine Werte zurückgeben. Hinweis DataReader-Objekte werden in Kapitel 4 behandelt. Mit einem DataReader-Objekt wird ein schneller vorwärtsgerichteter, schreibgeschützter Datenstrom von einer Datenquelle erzeugt. DataReader-Objekte können nicht direkt im Programmcode angelegt werden, sondern müssen über die ExecuteReader-Methode eines Command-Objekts erstellt werden. Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) 24 Teil A: Einführung in ADO.NET Hinweis Adapter werden in Kapitel 5 und 8 erläutert. In ADO.NET 1.0 ist nur ein Typ von Adapter, das DataAdapter-Objekt, verfügbar. ADO.NET 2.0 stellt dagegen zwei Adapter bereit. Das DataAdapter-Objekt wird noch unterstützt und wurde um ein neues Objekt, das TableAdapter-Objekt, ergänzt. Das DataAdapter-Objekt ist funktional gesehen das komplexeste Objekt eines Datenproviders. Es ermöglicht die Verbindung zwischen einem Connection- und einem DataSetObjekt. Das DataAdapter-Objekt enthält vier Command-Objekte: SelectCommand, UpdateCommand, InsertCommand und DeleteCommand. Das DataAdapter-Objekt verwendet das SelectCommand-Objekt, um das DataSet zu füllen und die restlichen drei CommandObjekte, um bei Bedarf Änderungen an die Datenquelle zu übertragen. Auch wenn diese Analogie nicht ganz stimmig ist, können Sie TableAdapter-Objekte als stark typisierte DataAdapter-Objekte betrachten. Mit der SelectCommand-Eigenschaft eines DataAdapter-Objekts können zur Laufzeit beliebige Daten aus der in der Connection-Eigenschaft angegebenen Tabelle abgerufen werden. Ein TableAdapter-Objekt ist jedoch spezifisch für ein DataTable-Objekt in einem typisierten DataSet-Objekt. Ein TableAdapter-Objekt enthält als private Eigenschaften sowohl ein DataAdapterObjekt als auch ein Connection-Objekt und überdies zusätzliche Funktionen, die es erleichtern, eine Verbindung zu einer Datenquelle herzustellen und diese effizient zu nutzen. Microsoft ActiveX Data Objects (ADO) Auf funktionaler Ebene entsprechen Connection- und Command-Objekte im großen und ganzen ihren ADO-Gegenstücken. Das DataReader-Objekt fungiert dagegen als Firehose-Cursor. Für DataAdapter-, TableAdapter- und DataSet-Objekte gibt es in ADO keine Entsprechung. DataSet-Objekte Hinweis DataSet-Objekte und die zugehörigen Komponentenauflistungen werden in Kapitel 7 und 8 behandelt. Ein DataSet-Objekt ist ein speicherresidentes Datenabbild. Seine Struktur wird in Abbildung 1.2 dargestellt. Das DataSet kann als vereinfachte relationale Datenbank betrachtet werden, die aus Tabellen und ihren Verbindungen besteht. Wichtig ist jedoch, dass das DataSet nie mit der Datenquelle verknüpft ist, d. h. es »weiß« nicht, woher die Daten stammen, die es enthält, und es kann sogar Daten aus mehreren Quellen enthalten. Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) Kapitel 1: Einstieg in ADO.NET 25 Abbildung 1.2 Struktur des DataSet-Objekts Das DataSet setzt sich aus zwei Objekten zusammen: Dem DataTableCollection-Objekt, auf das über die Tables-Eigenschaft zugegriffen wird, und das DataRelationCollection, auf das über die Relations-Eigenschaft zugegriffen wird. Das DataTableCollection-Objekt enthält Null oder mehr DataTable-Objekte, die ihrerseits aus drei Auflistungen bestehen: DataColumnCollection, DataRowCollection und Constraint-Collection. Das DataRelationCollection-Objekt enthält Null oder mehr DataRelation-Objekte. Das DataTableCollection-Objekt Hinweis DataColumns-Objekte werden in Kapitel 7 besprochen. Das DataColumnCollection-Objekt eines DataTable-Objekts definiert die Spalten, aus denen sich das DataTable-Objekt zusammensetzt. Neben den Eigenschaften ColumnName und DataType kann mit den DataColumn-Eigenschaften die Zulässigkeit von Nullen (AllowDBNull), die maximale Länge (MaxLength) und sogar ein Ausdruck definiert werden, mit dem der Wert berechnet wird (Expression). Hinweis DataRows-Objekte werden in Kapitel 8 besprochen. Die DataRowCollection-Auflistung des DataTable-Objekts, die auch leer sein kann, enthält die eigentlichen Daten, die von der DataColumnCollection-Auflistung definiert werden. Das DataTable-Objekt enthält die ursprünglichen, aktuellen und vorgeschlagenen Werte jedes DataRow-Objekts. Wie Sie noch sehen werden, werden dadurch bestimmte Programmieraufgaben erheblich vereinfacht, z. B. in einem Programm dem Benutzer die Möglichkeit zu geben, Änderungen zu verwerfen, die sie an einer Datenzeile (einem DataRow-Objekt) vorgenommen haben. Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) 26 Teil A: Einführung in ADO.NET ADO Das DataTable-Objekt von ADO.NET entspricht dem Recordset-Objekt von ADO, spielt im Objektmodell jedoch eine ganz andere Rolle. Hinweis Constraint-Objekte werden in Kapitel 7 besprochen. Die ConstraintCollection-Auflistung eines DataTable-Objekts enthält Null oder mehr Einschränkungen. Wie bei einer relationalen Datenbank dienen Einschränkungen zur Wahrung der Datenintegrität. ADO.NET unterstützt zwei Arten von Einschränkungen: Fremdschlüsseleinschränkungen (ForeignKeyContraints) und Unique-Einschränkungen (UniqueConstraints). Fremdschlüsseleinschränkungen gewährleisten die relationale Integrität, d. h. sie stellen sicher, dass eine untergeordnete Zeile einer Datentabelle (DataTable) nicht verwaisen kann. Unique-Einschränkungen gewährleisten die Datenintegrität, d. h. sie stellen sicher, dass keine Duplikate einer Zeile zur Tabelle (DataTable) hinzugefügt werden können. (Durch die PrimaryKey-Eigenschaft des DataTable-Objekts wird die Integrität der gesamten Tabelle sichergestellt, da sie die Eindeutigkeit jeder Datenzeile erzwingt.) Das DataRelationCollection-Objekt Hinweis DataRelations-Objekte werden in Kapitel 7 besprochen. Die DataRelationCollection-Auflistung eines DataSet-Objekts enthält Null oder mehr DataRelation-Objekte. DataRelation-Objekte stellen eine einfache Programmierschnittstelle für die Navigation zwischen einer Zeile in einer Tabelle und den damit verknüpften Zeilen in einer anderen Tabelle bereit. Beispielsweise lassen sich bei einer Tabelle namens Bestellungen über das DataRelation-Objekt ganz einfach die damit verknüpften Zeilen aus der Tabelle Bestelldetails abrufen. Das DataRelation-Objekt selbst erzwingt die relationale Integrität allerdings nicht. Zu diesem Zweck muss eine Fremdschlüsseleinschränkung eingesetzt werden. Ein einfaches datengebundenes Formular erstellen Der Vorgang, mit dem Daten an ein Formular gebunden werden, wird als Datenbindung bezeichnet. Die Datenbindung kann zwar auch mit Programmcode durchgeführt werden, die integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) von Microsoft Visual Studio .NET und das neue TableAdapter-Objekt vereinfachen diesen Vorgang jedoch sehr. In diesem Abschnitt werden Sie mit den Designern und Assistenten von Visual Studio ein einfaches, datengebundenes Windows Form erstellen. Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) Kapitel 1: Einstieg in ADO.NET 27 Wichtig Falls Sie die Übungsdateien zum Buch noch nicht installiert haben, sollten Sie nun den Abschnitt »Installation der Übungsdateien« in der Einführung durcharbeiten und dann zu diesem Kapitel zurückkehren. Eine Datenquelle konfigurieren Der erste Schritt bei der Datenbindung besteht darin, eine Datenquelle für das Projekt zu erstellen. Visual Studio stellt hierfür den Assistenten zum Konfigurieren von Datenquellen bereit, mit dem sich dieser Vorgang ganz einfach durchführen lässt. Dem Projekt eine Datenquelle hinzufügen 1. Starten Sie Visual Studio. 2. Öffnen Sie das Projekt Kapitel 01 – Anfang, und doppelklicken Sie, falls notwendig, auf Employees.vb (bzw. Employees.cs, wenn Sie mit C# arbeiten), um das Formular zu öffnen. Visual Studio zeigt das Formular an (siehe Abbildung 1.3). Abbildung 1.3 Das Formular Employees.vb in Visual Studio 3. Wählen Sie im Menü Daten den Befehl Neue Datenquelle hinzufügen. Visual Studio öffnet den Assistenten zum Konfigurieren von Datenquellen (siehe Abbildung 1.4). Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) 28 Teil A: Einführung in ADO.NET Abbildung 1.4 Assistent zum Konfigurieren von Datenquellen Tipp Der Befehl Neue Datenquelle hinzufügen ist auch im Fenster Datenquellen verfügbar. Um das Fenster Datenquellen zu öffnen, wählen Sie im Menü Daten den Befehl Datenquellen anzeigen. 4. Übernehmen Sie die Standardeinstellung Datenbank als Datenquellentyp, und klicken Sie dann auf Weiter. Der Assistent zum Konfigurieren von Datenquellen zeigt eine Seite an, auf der Sie eine Verbindung auswählen sollen (siehe Abbildung 1.5). Abbildung 1.5 Datenverbindung auswählen oder neu erstellen Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) Kapitel 1: Einstieg in ADO.NET 5. 29 Klicken Sie auf Neue Verbindung. Das Dialogfeld Datenquelle auswählen wird angezeigt (siehe Abbildung 1.6). Abbildung 1.6 Das Dialogfeld Datenquelle auswählen Tipp Wenn das Dialogfeld Verbindung hinzufügen angezeigt wird, klicken Sie auf Ändern, um das Dialogfeld Datenquelle wechseln zu öffnen. 6. Wählen Sie Microsoft SQL Server aus, deaktivieren Sie das Kontrollkästchen Immer diese Auswahl verwenden, und klicken Sie dann auf Weiter. Das Dialogfeld Verbindung hinzufügen wird angezeigt (siehe Abbildung 1.7). Abbildung 1.7 Das Dialogfeld Verbindung hinzufügen Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) 30 Teil A: 7. Einführung in ADO.NET Geben Sie im Feld Servername den Namen (local)\SQLEXPRESS ein. Der Eintrag (local) bezeichnet den lokalen Computer, und SQLEXPRESS ist der Name der SQL Server-Instanz. Wichtig Dieses Buch und die zugehörigen Beispiele sind für die Verwendung einer Standardinstallation von Microsoft SQL Server 2005 Express Edition konzipiert, deren Instanzenname SQLEXPRESS lautet. Wenn Sie dieses Buch mit einem anderen SQL Server-Instanzennamen oder der Vollversion von SQL Server verwenden möchten, müssen Sie die Übungsschritte und die Verbindungszeichenfolgen entsprechend anpassen. 8. Wählen Sie in der Dropdownliste unter Wählen Sie einen Datenbanknamen aus, oder geben Sie einen ein die Datenbank AdoStepByStep aus (siehe Abbildung 1.8). Abbildung 1.8 Hier wählen Sie die Datenbank AdoStepByStep aus Wichtig Wenn der Datenbankname AdoStepByStep nicht in der Liste aufgeführt wird, überprüfen Sie nochmals, ob Sie die in der Einführung beschriebene Anleitung zur Installation der Quelltextbeispiele korrekt befolgt haben. Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) Kapitel 1: Einstieg in ADO.NET 9. 31 Klicken Sie im Dialogfeld Verbindung hinzufügen auf OK, und klicken Sie auf der Seite Assistent zum Konfigurieren von Datenquellen auf Weiter. Der Assistent zum Konfigurieren von Datenquellen zeigt nun eine Seite mit der Option an, die Verbindungszeichenfolge in der Anwendungskonfigurationsdatei zu speichern (siehe Abbildung 1.9). Abbildung 1.9 Die Verbindungszeichenfolge soll nicht gespeichert werden 10. Stellen Sie sicher, dass das Kontrollkästchen Ja, Verbindung speichern unter deaktiviert ist, und klicken Sie dann auf Weiter. Nach einigen Sekunden zeigt der Assistent zum Konfigurieren von Datenquellen die in der Datenbank enthaltenen Objekte an. 11. Erweitern Sie den Knoten Tabellen, und wählen Sie Employees aus (siehe Abbildung 1.10). 12. Klicken Sie auf Fertig stellen. Der Assistent zum Konfigurieren von Datenquellen fügt die neue Datenquelle dem Fenster Datenquellen hinzu (siehe Abbildung 1.11). Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) 32 Teil A: Einführung in ADO.NET Abbildung 1.10 Datenbankobjekt Employees auswählen Abbildung 1.11 Die neue Datenquelle wird im Fenster Datenquellen angezeigt Tipp Wenn das Fenster Datenquellen nicht geöffnet ist, wählen Sie im Menü Daten den Befehl Datenquellen anzeigen, um es zu öffnen. Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) Kapitel 1: Einstieg in ADO.NET 33 Mit dem Fenster Datenquellen arbeiten Nachdem eine Datenquelle eingerichtet wurde, können Sie das Fenster Datenquellen benutzen, um eine Vorschau der Daten zu betrachten und datengebundene Steuerelemente einem Formular hinzuzufügen, indem Sie einfach eine Tabelle oder Spalte auf die Entwurfsoberfläche des Formulars ziehen. Sie können den Steuerelementtyp festlegen, indem Sie den Tabellen- oder Spaltennamen markieren und eine Dropdownliste mit den verfügbaren Steuerelementtypen öffnen. Vorschau von Tabellendaten 1. Doppelklicken Sie im Projektmappen-Explorer auf AdoStepByStepDataSet.xsd. Visual Studio zeigt das DataSet im DataSet-Designer an (siehe Abbildung 1.12). Abbildung 1.12 Die Tabelle Employees 2. Klicken Sie mit der rechten Maustaste auf die Tabelle Employees, und wählen Sie im Kontextmenü den Befehl Datenvorschau. Visual Studio zeigt das Dialogfeld Datenvorschau an (siehe Abbildung 1.13). 3. Klicken Sie auf die Schaltfläche Vorschau. Visual Studio zeigt den Inhalt der Tabelle an (siehe Abbildung 1.14). Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) 34 Teil A: Einführung in ADO.NET Abbildung 1.13 Das Dialogfeld Datenvorschau Abbildung 1.14 Die Datenvorschau der Tabelle Employees 4. Schließen Sie das Dialogfeld. Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) Kapitel 1: Einstieg in ADO.NET 35 Den Standardsteuerelementtyp einer Spalte ändern 1. Wechseln Sie zurück zum Formular Employees, indem Sie auf Employees.vb [Entwurf] (bzw. Employees.cs [Entwurf], wenn Sie mit C# arbeiten) doppelklicken. 2. Erweitern Sie im Fenster Datenquellen den Tabellenknoten Employees, markieren Sie EmployeeID, und erweitern Sie das Dropdownfeld (siehe Abbildung 1.15). Abbildung 1.15 Dropdownliste mit Steuerelementtypen 3. Wählen Sie in der Liste den Eintrag Label aus. Der Standardsteuerelementtyp für diese Spalte wird daraufhin geändert. Tipp Sie können den Standardsteuerelementtyp für alle Spalten eines bestimmten Datentyps im Dialogfeld Optionen ändern, das Sie über das Menü Extras von Visual Studio öffnen. Ein datengebundenes Steuerelement einem Formular hinzufügen 1. Ziehen Sie die Spalte EmployeeID in die obere rechte Ecke des Formulars. Hinweis BindingNavigator-Objekte werden in Kapitel 13 besprochen. Visual Studio fügt dem Formular ein Label-Steuerelement, ein BindingNavigatorSteuerelement und verschiedene Komponenten hinzu (siehe Abbildung 1.16). Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) 36 Teil A: Einführung in ADO.NET Abbildung 1.16 Dem Formular wurde ein Label-Steuerelement hinzugefügt 2. Ziehen Sie die Spalten Title, First Name, Last Name, Hire Date und Notes auf das Formular, und ordnen Sie sie wie in Abbildung 1.17 an. Abbildung 1.17 Neue datengebundene Steuerelemente im Formular 3. Klicken Sie auf das Smarttag-Symbol am Textfeld Notes, und aktivieren Sie im Kontextmenü das Kontrollkästchen MultiLine (siehe Abbildung 1.18). Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) Kapitel 1: Einstieg in ADO.NET 37 Abbildung 1.18 Textfeld mit Kontextmenü und der Option MultiLine 4. Verschieben und vergrößern Sie das Steuerelement wie in Abbildung 1.19 dargestellt. Abbildung 1.19 Das fertig gestellte Formular 5. Drücken Sie (F5), um die Anwendung auszuführen. Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9) 38 Teil A: Einführung in ADO.NET Visual Studio kompiliert die Anwendung und zeigt die Daten der Tabelle Employees in den Steuerelementen auf dem Formular an (siehe Abbildung 1.20). Abbildung 1.20 Formular mit Daten aus der Tabelle Employees 6. Zeigen Sie mithilfe der Navigationsschaltflächen des BindingNavigator-Steuerelements am oberen Rand des Formulars die Tabellendaten an. Schließen Sie die Anwendung, wenn Sie alle Daten betrachtet haben. Zusammenfassung In diesem Kapitel wurde veranschaulicht, wie einfach ein datengebundenes Windows Form in Microsoft Visual Studio 2005 erstellt werden kann. Im weiteren Verlauf dieses Buches werden wir die verschiedenen ADO.NET-Klassen und verwandte Klassen genauer untersuchen. Wir beginnen mit dem Connection-Objekt, das für die Kommunikation zwischen einer .NET Framework-Anwendung und einer Datenquelle zuständig ist. Rebecca Riordan: Microsoft ADO.NET 2.0 - Schritt für Schritt. Microsoft Press 2006 (ISBN 3-86063-585-9)