Inhalt
Vorwort
1 Wie .NET und ASP.NET funktionieren
2 Installation
3 Hinweise zu VB.NET
4 »Hallo, Welt!« – Ein ASP.NET-Crashkurs
5 Die Page-Klasse
6 HTML-Serversteuerelemente
7 Validierung von Anwendereingaben
8 Webserversteuerelemente
9 Webserversteuerelemente für die Darstellung von Listen
10 Webserversteuerelemente selbst erstellen
11 Der Status von Seiten, Sitzungen und Applikationen
12 ASP.NET und Datenbanken
13 »Wer darf was?« ASP.NET und Sicherheit
14 Webanwendungen erstellen und konfigurieren
15 Leistungssteigerung durch Caching
16 Web Services
A Anhang
Index
Download (ca 14,3 MB)
Buch bestellen (29,90 EUR)
Ihre Meinung?@
<< zurück | Galileo Computing / <openbook> / Einstieg in ASP.NET | vor >>
Einstieg in ASP.NET von Matthias Lohrer
| Kapitel 12 ASP.NET und Datenbanken
|  | 12.1 Auf Datenbanken zugreifen – ein Crashkurs
|  |  | 12.1.1 Eine Tabelle im Browser anzeigen
|  |  | 12.1.2 Über den Browser einen Datensatz hinzufügen
|  | 12.2 Wie ADO.NET funktioniert – ein Überblick
|  | 12.3 Die Verbindung zur Datenbank herstellen
|  |  | 12.3.1 OleDbConnection
|  |  | 12.3.2 SqlConnection
|  | 12.4 Daten lesen mit SqlCommand und OleDbCommand
|  |  | 12.4.1 ExecuteReader
|  |  | 12.4.2 ExecuteNonQuery und die Parameters-Collection
|  |  | 12.4.3 ExecuteScalar
|  | 12.5 SqlDataReader und OleDbDataReader
|  |  | 12.5.1 Ein Reader-Objekt an ein Steuerelement binden
|  |  | 12.5.2 Ein Reader-Objekt an ein Listensteuerelement binden
|  |  | 12.5.3 Ein Reader-Objekt zeilenweise auswerten
|  | 12.6 Die DataSet-Klasse
|  |  | 12.6.1 Das Zusammenspiel von Command, Adapter und DataSet
|  |  | 12.6.2 Mehrere Tabellen in ein DataSet-Objekt einlesen
|  |  | 12.6.3 Auf einzelne Zeilen, Spalten und Tabellen eines DataSet-Objekts gezielt zugreifen
|  |  | 12.6.4 Relationen zwischen Tabellen festlegen
|  | 12.7 DataViews verwenden
|  |  | 12.7.1 Tabellen sortieren
|  |  | 12.7.2 Tabellen nach Inhalten filtern
|  |  | 12.7.3 Nach dem Zeilenstatus filtern
|  |  | 12.7.4 In Tabellen suchen
|  | 12.8 Mit ASP.NET Daten bearbeiten
|  | 12.9 Daten bearbeiten mit dem Command-Objekt
|  | 12.10 In-Place-Editing mit dem DataGrid-Steuerelement
|  |  | 12.10.1 Die EditItemIndex-Eigenschaft
|  |  | 12.10.2 Das asp:DataGrid-Tag anpassen
|  |  | 12.10.3 OnEditCommand: Daten bearbeiten
|  |  | 12.10.4 OnCancelCommand: Die Bearbeitung abbrechen
|  |  | 12.10.5 OnUpdateCommand: Die Änderungen sichern
|  |  | 12.10.6 Das Repeater-Steuerelement verwenden
|  |  | 12.10.7 Die Ereignisse des Repeater-Steuerelements auswerten
|  | 12.11 Das DataList-Steuerelement
|  |  | 12.11.1 In-Place-Editing mit dem DataList-Steuerelement
# Kapitel 12 ASP.NET und Datenbanken Für die Arbeit mit Datenbanken hält ASP.NET viele leistungsfähige Hilfsmittel bereit. Entwickler, die Daten über Webschnittstellen bearbeiten möchten, können mit ASP.NET schnell und effizient komfortable Benutzeroberflächen entwickeln. Um dieses Kapitel auf dem eigenen Rechner nachvollziehen zu können, benötigen Sie entweder Access oder einen SQL Server oder die MSDE. Als Testdatenbank wird die Nordwind-Datenbank verwendet, die Microsoft jeweils als Beispieldatenbank mitliefert. »Mit ADO.NET wird alles ganz anders.« So oder ähnlich beginnen viele Beiträge zum Thema Datenbankzugriff unter ASP.NET und stimmen den Leser und Entwickler damit auf ein langwieriges Erlernen der neuen Technologie ein. Aber, ach was! Es geht doch immer um das Gleiche. Hier liegen die Daten in einer relationalen Datenbank. Und da ist das universale Anzeigetool dieser Tage: der Webbrowser. Von hier sollen die Daten da hinein. Und das kann ja wohl nicht so schwierig sein. Ist es auch nicht. Deswegen zeige ich erst einmal, wie es geht. Und erkläre anschließend, was dabei eigentlich passiert. ## 12.1 Auf Datenbanken zugreifen – ein Crashkurs ### 12.1.1 Eine Tabelle im Browser anzeigen Die Seite db_01.aspx liest die Tabelle Versandfirmen aus der Nordwind-Datenbank aus und zeigt sie in Form einer HTML-Tabelle an:
    <!-- db_01.aspx -->
    <%@ Page Language="VB" Debug="True" Strict="True" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <script runat="server">
    Sub Page_Load (ByVal Sender As Object, _
                   ByVal E As EventArgs)
       ' Verbindungszeichenfolge zusammensetzen
       Dim connStr As String
       connStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
       connStr += _
      "Data Source=E:\ASPdotNETBuch\Listings\Nordwind.mdb;"

       ' Verbindung zur Datenbank herstellen
       Dim conn As New OleDbConnection(connStr)
       conn.Open()

       ' SQL-Kommando erstellen und ausführen
       Dim sql As String
       sql = "SELECT * FROM Versandfirmen"
       Dim cmd As New OleDbCommand(sql, conn)
       Dim myDataReader As OleDbDataReader
       myDataReader = cmd.ExecuteReader()

       ' SQL-Resultat an ein Steuerelement binden
       myGrid.DataSource = myDataReader
       DataBind()
       myDataReader.Close()
       conn.Close()

    End Sub
    </script>
    <html><head><title>
    Daten aus einer Datenbank auslesen
    </title></head>
    <body>
    <h3>Daten aus einer Datenbank auslesen</h3>
    <p>Die Nordwind-Datenbank verzeichnet folgende
    Versandfirmen:</p>
    <asp:DataGrid id="myGrid" runat="server" />
    </body></html>
Abbildung 12.1 zeigt die Darstellung im Browser. Als Beleg dafür, dass hier alles mit rechten Dingen zugeht, zeigt Abbildung 12.2 den erzeugten HTML-Code: eine schlichte HTML-Tabelle. Und als Beweis, dass auch die korrekten Daten gelesen wurden, zeigt Abbildung 12.3, wie Access die Tabelle darstellt. Hier klicken, um das Bild zu Vergrößern Abbildung 12.1 Diese Tabelle stammt aus der Nordwind-Datenbank. Hier klicken, um das Bild zu Vergrößern Abbildung 12.2 Die Darstellung basiert auf einer schlichten HTML-Tabelle. Hier klicken, um das Bild zu Vergrößern Abbildung 12.3 So zeigt Access die Tabelle an. In der aspx-Seite sehen Sie wenige Zeilen Code mit maximaler Wirkung. Mit Hilfe der OleDbConnection-Klasse wird eine Verbindung zur Datenbank aufgebaut. Als Nächstes wird ein SQL-Kommando erstellt und ausgeführt. Die Klassen OleDbCommand und OleDbDataReader spielen hier eine gewisse Rolle. Und dann sorgen zwei weitere Zeilen dafür, dass das Recherche-Ergebnis an das DataGrid-Steuerelement gebunden wird, das seinerseits für die HTML-Darstellung zuständig ist. Das OleDbDataReader- und das OleDbConnection-Objekt werden wieder geschlossen, und das war es dann auch schon. Mehr ist nicht nötig, wenn Sie eine Datenbanktabelle im Browser anzeigen lassen wollen. Und der erzeugte HTML-Code ist so simpel, dass auch jeder alte Browser damit zurechtkommt. ### 12.1.2 Über den Browser einen Datensatz hinzufügen Ist es genauso einfach, die Daten zu bearbeiten? Ja, das geht. Den Schlüssel für die Bearbeitung stellt die Methode ExecuteNonQuery() der OleDbCommand-Klasse dar. db_02.aspx demonstriert ein einfach zu realisierendes Beispiel. Die Seite listet die verfügbaren Versandfirmen auf und bietet anschließend die Möglichkeit, einen neuen Versender hinzuzufügen. Der komplette Code liegt wieder in der Prozedur Page_Load. Nach dem Aufbau der Verbindung zur Datenbank wird zunächst geprüft, ob ein Postback vorliegt. In diesem Fall werden die Eingabedaten des Formulars gelesen und an die Datenbank angefügt. Erst anschließend folgt der Code, der die Tabelle darstellt. Weil erst eingefügt und dann ausgelesen wird, enthalten die ausgelesenen Daten stets den neu eingefügten Datensatz. Wenn kein Postback vorliegt, werden lediglich die Daten ausgelesen und angezeigt. Den SQL-Befehl weisen Sie der Eigenschaft CommandText zu. Dabei müssen Sie die variablen Bestandteile aber nicht in diesen String einbauen, sondern können dafür die Parameters-Eigenschaft verwenden. Im SQL-Befehl kennzeichnen Sie die Platzhalter durch ein führendes @-Zeichen. Der zusammenhängende Code ist deutlicher als jede Erklärung:
    <!-- db_02.aspx -->
    <%@ Page Language="VB" Debug="True" Strict="True" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <script runat="server">
    Sub Page_Load (ByVal Sender As Object, _
                   ByVal E As EventArgs)
       ' Verbindungszeichenfolge zusammensetzen
       Dim connStr As String
       connStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
       connStr += _
      "Data Source=E:\ASPdotNETBuch\Listings\Nordwind.mdb;"

       ' Verbindung zur Datenbank herstellen
       Dim conn As New OleDbConnection(connStr)
       conn.Open()

       ' Bei einem Postback einen Datensatz anfügen
       If IsPostBack Then
          Dim iCmd As New OleDbCommand()
          iCmd.Connection = conn
          iCmd.Parameters.Add("@Firma", txtFirma.value)
          iCmd.Parameters.Add("@Telefon", txtTelefon.value)
          iCmd.CommandText = "INSERT INTO Versandfirmen "
          iCmd.CommandText += "(Firma, Telefon) "
          iCmd.CommandText += "VALUES (@Firma, @Telefon)"
          iCmd.ExecuteNonQuery()
       End If

       ' SQL-Kommando erstellen und ausführen
       Dim sql As String
       sql = "SELECT * FROM Versandfirmen"
       Dim cmd As New OleDbCommand(sql, conn)
       Dim myDataReader As OleDbDataReader
       myDataReader = cmd.ExecuteReader()

       ' SQL-Resultat an ein Steuerelement binden
       myGrid.DataSource = myDataReader
       DataBind()

       myDataReader.Close()
       conn.Close()

    End Sub
    </script>
    <html><head><title>
    Datensätze hinzufügen
    </title></head>
    <body>
    <h3>Datensätze hinzufügen</h3>
    <p>Die Nordwind-Datenbank verzeichnet folgende
    Versandfirmen:</p>
    <asp:DataGrid id="myGrid" runat="server" />
    <br>
    <form runat="server">
    <p>Neue Versandfirma hinzufügen:</p>
    Firmenname<br>
    <input type="text" runat="server" id="txtFirma"><br>
    Telefon<br>
    <input type="text" runat="server" id="txtTelefon"><br>
    <input type="submit" runat="server" value="Hinzufügen">
    </form></body></html>
Abbildung 12.4 zeigt die Darstellung im Browser, nachdem ein neuer Datensatz hinzugefügt wurde. Wer will, kann auf ähnliche Weise dem Anwender ermöglichen, die vorhandenen Daten zu bearbeiten. Der Anwender benötigt eine Möglichkeit, einen Datensatz zu selektieren und anschließend die Felder Firma und Telefon zu editieren. In der Eigenschaft CommandText legen Sie den entsprechenden SQL-Befehl zurecht und über die Parameters-Auflistung stellen Sie die Eingaben des Anwenders bereit. Mehr ist nicht nötig, um auf einfache Art und Weise die Inhalte der Datenbank zu aktualisieren. Hier klicken, um das Bild zu Vergrößern Abbildung 12.4 Mit der Methode ExecuteNonQuery des OleDbCommand-Objekts führen Sie SQL-Statements aus, die keine Daten zurückgeben, z. B. INSERT-Anweisungen. Mit Hilfe der DataSet-Klasse lassen sich solche Bearbeitungsvorgänge übrigens noch weiter automatisieren. Ein entsprechendes Beispiel würde allerdings den Rahmen dieses kleinen vorgeschalteten Crashkurses sprengen. Sie konnten zunächst erkennen, dass auch ADO.NET offenkundig nur mit Wasser kocht. Allerdings hat ADO.NET auch noch erheblich mehr zu bieten, als die beiden Beispiele zeigen konnten. Diese weiter gehenden Möglichkeiten werden Sie auf den folgenden Seiten kennen lernen.
<< zurück | <top> | vor >>
Zum Katalog
Einstieg in ASP.NET bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung

.NET-Bibliothek
| Einstieg in VB.NET
| VB.NET
| Einstieg in C#
| Visual C#
| VB.NET und Datenbanken

Empfehlung
| Einstieg in XML

Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

MyGalileo
Der Service für registrierte Leser: Info

Copyright © Galileo Press GmbH 2003
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.

[Galileo Computing]
Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de