TOC

This article has been localized into German by the community.

ASP.NET & MySQL:

MySQL - Erster Zugriff

Okay, versuchen wir, mit ASP.NET zum ersten Mal auf unsere Testtabelle zuzugreifen. Zunächst müssen wir den Namespace System.Data.Odbc importieren. Fügen Sie die folgende Zeile oben in Ihre CodeBehind-Datei ein:

using System.Data.Odbc;

Dadurch erhalten wir Zugriff auf eine Reihe von ODBC-Klassen. Im Moment brauchen wir 3 davon:

  • OdbcConnection - Stellt eine ODBC-Verbindung zu einer Datenbank bereit.
  • OdbcCommand - Führt einen SQL-Befehl unter Verwendung einer vorhandenen OdbcConnection aus.
  • OdbcDataReader - Ermöglicht den schnellen Zugriff auf die Daten, die uns der OdbcCommand liefert.

Das erste Beispiel konzentriert sich darauf, auf unsere Testdaten zuzugreifen und sie einfach auszudrucken. Dies ist zwar nicht die normale Vorgehensweise mit ASP.NET, es soll Ihnen jedoch nur das grundlegendste Beispiel für den Datenzugriff zeigen. Da wir direkt auf die (obere) Seite schreiben, müssen wir keinen Markup-Code hinzufügen. Gehen Sie einfach zur CodeBehind-Datei (.cs) und fügen Sie der Page Load-Methode den folgenden Code hinzu:

try
{
    using(OdbcConnection connection = new OdbcConnection(ConfigurationManager.ConnectionStrings["MySQLConnStr"].ConnectionString))
    {
        connection.Open();
        using(OdbcCommand command = new OdbcCommand("SELECT name FROM test_users", connection))
        using(OdbcDataReader dr = command.ExecuteReader())
        {
            while(dr.Read())
                Response.Write(dr["name"].ToString() + "<br />");
            dr.Close();
        }
        connection.Close();
    }
}
catch(Exception ex)
{
    Response.Write("An error occured: " + ex.Message);
}

Okay, wenn Sie aus der PHP-Welt kommen, werden Sie wahrscheinlich wegen der großen Menge an Code, die für eine einfache Datenbankextraktion benötigt wird, davonlaufen. C# ist jedoch eine objektorientierte Sprache, und manchmal ist nur ein bisschen mehr Code erforderlich, um eine elegantere Lösung zu erstellen. Natürlich kann Code wie dieser in wiederverwendbaren Klassen und Methoden gesammelt werden, aber im Moment machen wir es auf die grundlegende Art und Weise.

Lassen Sie mich nun versuchen, die verschiedenen Codezeilen zu erklären. Zuerst erstellen wir ein OdbcConnection-Objekt, um die Verbindung mit der Datenbank herzustellen. Wir verwenden die ConfigurationManager-Klasse, um die Verbindungszeichenfolge abzurufen, die wir im vorherigen Kapitel in der Datei web.config gespeichert haben. Es ist mit in einem using() -Konstrukt, was eine einfache Möglichkeit ist, C# mitzuteilen, dass es das Objekt entsorgen soll, wenn der Codeblock endet. Wenn wir es nicht verwenden würden, müssten wir stattdessen connection.Dispose() aufrufen; als wir fertig waren. Als Nächstes öffnen wir die Verbindung und erstellen dann eine Instanz der OdbcCommand-Klasse, mit der SQL-Abfragen für die Datenbank ausgelöst werden. Mit dem Befehlsobjekt fragen wir die Datenbank ab und erhalten im Gegenzug einen OdbcDataReader. Die DataReader-Klasse ist die einfachste und schnellste Möglichkeit, auf eine Datenbank in .NET zuzugreifen.

Wir durchlaufen den Daten-Reader und geben bei jeder Iteration das Namensfeld aus der Datenbank zusammen mit einem Zeilenumbruch-Tag aus. Ziemlich einfach, oder? Wie Sie sehen, ist der gesamte Datenzugriffsblock in einem try..catch-Block gekapselt. Bei der Interaktion mit einer Datenbank kann vieles schief gehen. Es wird daher empfohlen, einen try..catch-Block zu verwenden. Mit dr["name"] erhalten wir das Ergebnis als Objekt, weshalb ich ToString() aufrufe. Wenn Sie mehr Kontrolle über den Datentyp wünschen, den Sie vom Reader erhalten, können Sie die Get * -Methoden wie GetInt32(), GetString() usw. verwenden. Bei diesen Methoden müssen Sie jedoch den Index des Felds in Ihrer Abfrage verwenden. und nicht der Name des Feldes, was nicht so bequem ist.

Führen Sie die Website aus und sehen Sie sich die Ausgabe an. Es sollte eine Reihe von Namen aus unserer Testtabelle oder der von Ihnen verwendeten Tabelle enthalten.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!