Datenbankzugriff mit ASP.NET 2.0
Code-Ersparnis

Allgemein

Kaum hat sich ASP.NET mühsam den Weg zu den Entwicklern gebahnt, schon soll es eine neue Version geben. Dieser Artikel zeigt neue Möglichkeiten für den Datenbankzugriff.

Neue Version

Datenbankzugriff mit ASP.NET 2.0

Der Codename Whidbey steht für die neue Version von Visual Studio.NET und für das neue .NET-Framework 2.0. Teil dieser Aktualisierung ist natürlich auch ASP.NET, das nun ebenfalls die Versionsnummer 2.0 trägt. Die aktuelle Technical Preview oder auch Alpha des .NET-Frameworks bekam diese Versionsbezeichnung noch nicht. Sie meldet sich mit der Versionsnummer 1.2 oder genauer 1.2.30703. Allerdings soll diese Version laut Microsoft bei der Auslieferung die Nummer 2.0 tragen.


Whidbey

Datenbankzugriff mit ASP.NET 2.0

Erste Anlaufstelle für Whidbey ist die Site www.asp.net/whidbey. Dort stehen Whitepaper für den ASP.NET-Entwickler bereit, und auch die Präsentationen von der PDC, Microsofts großer Entwicklerkonferenz, sind abrufbar. Eine öffentlich verfügbare Version des .NET-Frameworks 1.2 (bald 2.0) gibt es aktuell nicht. Bevor Sie ASP.NET 2.0 also live testen können, wird noch eine Weile vergehen. Der geplante Erscheinungstermin für eine Beta mit allen Funktionen ist Herbst dieses Jahres. Die Final ist noch nicht terminiert. Dieser Artikel zeigt Ihnen allerdings schon einmal einige Möglichkeiten, die Ihnen ASP.NET 2.0 bieten wird. Das Hauptaugenmerk gilt dabei den neuen Möglichkeiten zur Datenbanksteuerung mit ADO.NET.


Die Datenbank

Datenbankzugriff mit ASP.NET 2.0

Übergreifendes Beispiel ist eine einfache Access-Datenbank namens reisen.mdb, die aus nur einer Tabelle namens laender besteht. Sie enthält einige Reiseziele mit Klima und Angabe der Hauptstadt als Text. Außerdem speichert ein Wahrheitswert, ob der Nutzer das Land schon besucht hat. Als Editor lässt sich natürlich jeder beliebige Text-Editor einsetzen. Für diesen Artikel kommt Webmatrix zum Einsatz, allerdings nur in der Codeansicht, da die aktuelle Version ASP.NET 2.0 noch nicht kennt. Die Handschrift von Webmatrix ist an der Großschreibung der Controls zu erkennen.


ADO.NET

Datenbankzugriff mit ASP.NET 2.0

Ziel der Whidbey-Entwickler war es, für ASP.NET und ADO.NET den Code-Aufwand, den ein Web-Entwickler hat, deutlich zu minimieren. Um das zu erreichen, wurde der Datenzugriff überarbeitet. Zwei Elemente bilden das Herzstück: Die DataSource stellt eine Verbindung zur Datenquelle her, stellt Daten aber nicht dar. Für die Darstellung sind Data-bound-Controls notwendig. Die Data
Source besitzt alle Möglichkeiten, Daten zu verarbeiten, und liefert die Daten dann als Tabelle oder als Baumhierarchie an das Data-bound-Control.

Sehen Sie sich das gleich in der Praxis an: Datenquellen unterstützt ASP.NET 2.0 natürlich mehrere. Für größere Datenbanken ist SqlDataSource gedacht, XML-Dateien liest die XmlDataSource. Für das Beispiel wird die AccessDataSource zum Direkteinbinden einer Access-Datenbank verwendet:




Die Access-Datenbank wird als DataFile angegeben, die SQL-Abfrage steht im SelectCommand. Die Datenquelle trägt eine ID, mit der sie vom Data-bound-Control erkannt werden kann. Hierfür dient das Attribut DataSourceId:


Damit sind Datenquelle und Datenausgabe verbunden. Das hier verwendete Control zur Datenausgabe heißt GridView. Es ist als Nachfolger für das DataGrid aus ASP.NET 1.0 und 1.1 gedacht. Das DataGrid wird zwar immer noch unterstützt, um Anwendungen abwärtskompatibel zu machen, soll aber beispielsweise aus der Toolbox von Visual Studio.NET verschwinden. Übrigens war der Name GridView lange in der Diskussion: DataGrid
Ex, DataGrid2 und IntelliGrid wurden diskutiert. Letzten Endes wurde es dann SmartGrid. Dieser Name ist allerdings nicht mehr offiziell, da es zu Namensproblemen mit einer Zusatzkomponente kam. In feiner Tradition hat Microsoft dann auch weitere Data-bound-Controls mit View am Ende versehen, beispielsweise den DetailsView oder den TreeView.


Verschönern

Datenbankzugriff mit ASP.NET 2.0

Bis jetzt hat das GridView alles automatisch gemacht. Um etwas mehr Kontrolle zu haben, können Sie die Tabellenspalten auch selbst erzeugen und dann natürlich auch beliebige Spalten weglassen.

Das geht so: Sie setzen AutoGenerateColumns auf false:



In dieser Zeile wird außerdem die Verteilung der Inhalte auf mehrere Seiten (AllowPaging) und die Sortierfunktion (AllowSorting) eingeschaltet.
Nun müssen Sie alle Spalten, die Sie sehen möchten, benennen:







Für jede Spalte können Sie außerdem eine Überschrift (HeaderText), das zugehörige Feld in der Datenbank (Data
Field) und den Eintrag, nach dem sortiert wird (SortExpression), angeben.

Für die Optik können Sie die schon vom DataGrid bekannten Eigenschaften auch für das GridView einsetzen. In der folgenden Zeile ändern Sie die Hintergrundfarbe der Kopfzeile und fügen etwas Abstand ein:




Einträge löschen

Datenbankzugriff mit ASP.NET 2.0

Bis jetzt war noch nicht so viel Besonderes dabei. Gebundene Spalten und Formatierungen sind in dieser Form auch schon mit dem DataGrid möglich, auch wenn das Sortieren komplizierter ist. Besonders simpel wird es aber, wenn Sie einzelne Dateneinträge löschen möchten. In diesem Fall geben Sie für die Datenquelle nur ein DeleteCommand an:




@ID ist dabei der Platzhalter (Parameter) für das zu löschende Element. Wichtig ist das Attribut ShareMode. Es muss Lese- und Schreibzugriff auf die Datenbank erlauben (ReadWrite). Im GridView müssen Sie nur zwei Attribute aktivieren. AutoGenerateDeleteButton erzeugt automatisch einen Link zum Löschen von Einträgen, DataKeyNames gibt das Schlüsselfeld an.



Editieren

Datenbankzugriff mit ASP.NET 2.0

Zum Editieren legen Sie mit dem Attribut UpdateCommand für die Datenquelle einen SQL-Befehl fest und stellen sicher, dass ShareMode auf ReadWrite gestellt ist. Hier sehen Sie den Code:



Im GridView blenden Sie eine Schaltfläche zum Bearbeiten mittels des Attributs AutoGenerateEditButton ein. Die ID soll nicht veränderbar sein ? stellen Sie diese mit readOnly=”true” auf nur lesbar (siehe Kasten »Listing 1«). Wenn Sie das Datenbankfeld mit dem Wahrheitswert einblenden, ob der Nutzer das Land bereits besucht hat, erscheint true oder false in der Tabelle.

Auch beim Editieren lässt sich nur ein Text eingeben. Hier wäre natürlich eine Checkbox hübscher. Dies ändern Sie einfach, indem Sie die Art des Feldes ändern. Aus BOUNDFIELD wird also CHECKBOXFIELD.


Wenn Sie nun das UpdateCommand in der Datenquelle aktualisieren, können Sie per Checkbox den Wahrheitswert ändern:


UpdateCommand="UPDATE laender SET Ziel = @Ziel, Klima = @Klima, Besucht = @Besucht WHERE ID = @ID"


Daten eingeben

Datenbankzugriff mit ASP.NET 2.0

Für die Dateneingabe bietet das GridView keine Option. Hierfür ist das neue DetailsView-Control zuständig. Es gehört auch zur Liste der Data-bound-Controls. Seine wichtigste Eigenheit besteht darin, immer nur einen Eintrag gleichzeitig anzuzeigen.Sehen Sie sich das genauer an: Bei der Datenquelle ändert sich nichts, außer dass bei InsertCommand ein SQL-Befehl für das Einfügen eines neuen Datensatzes hinzukommt:



Als Data-bound-Element kommt Details
View zum Einsatz. Die Schaltfläche für das Einfügen eines neuen Eintrags lassen Sie mit AutoGenerateInsertButton automatisch hinzufügen (siehe Kasten »Listing 2«). Die Spalte für die ID wird mit Insert
Visible ausgeblendet, wenn ein neuer Eintrag hinzukommt. Der Hintergrund: Sie wird als Auto-Wert von der Access-Datenbank automatisch vergeben.


Fazit

Datenbankzugriff mit ASP.NET 2.0

Ganz ohne Code werden Sie auch mit
der neuen Version 2.0 von ASP.NET nicht auskommen. Dennoch: Was GridView und Konsorten bereits in der Grundkonfiguration leisten, ist bemerkenswert. Dies verspricht, gerade im Zusammenspiel mit einer grafischen Entwicklungsoberfläche wie der Whidbey-Variante von Visual Studio oder mit einer neuen möglichen Webmatrix-Version, auf jeden Fall eine deutliche Arbeitserleichterung.