Share via


Exemplarische Vorgehensweise: Einfacher Datenzugriff in Windows Forms mit Hilfe von Visual J#

Eines der häufigsten Szenarien bei der Anwendungsentwicklung ist die Anzeige von Daten in einem Formular. In dieser exemplarischen Vorgehensweise wird ein einfaches Windows Form dargestellt, das Daten aus einer einzelnen Tabelle in einem Datenblatt anzeigt. Das Datenblatt kann bearbeitet werden, und Sie können Änderungen an Daten vornehmen sowie die Datenbank aktualisieren. Obwohl das Ergebnis relativ einfach ist, werden in der exemplarischen Vorgehensweise viele grundlegende Verfahren für den Zugriff auf Daten mit Formularen gezeigt.

Um die exemplarische Vorgehensweise nachzuvollziehen, benötigen Sie:

  • Zugriff auf einen Server mit der SQL Server-Beispieldatenbank Pubs.

Die exemplarische Vorgehensweise ist in kleinere Einheiten gegliedert:

  • Erstellen des Windows Forms.
  • Erstellen und Konfigurieren des Datasets, an welches das Formular gebunden wird. Dies beinhaltet die Erstellung einer Abfrage, mit deren Hilfe das Dataset aus der Datenbank gefüllt wird.
  • Hinzufügen des DataGrid-Steuerelements zum Formular und Binden an Daten.
  • Hinzufügen von Code, um das Dataset aufzufüllen.
  • Hinzufügen von Code, der Dataset-Änderungen zurück an die Datenbank sendet.

Nach Abschluss der exemplarischen Vorgehensweise erhalten Sie ein Formular, das dem folgenden ähnelt.

Erstellen von Projekt und Formular

Im ersten Schritt wird ein Windows Form erstellt.

So erstellen Sie das Projekt und das Formular

  1. Zeigen Sie im Menü Datei auf Neu, und wählen Sie dann Projekt.

  2. Wählen Sie im Bereich Projekttypen die Option Visual J#-Projekte und im Bereich Vorlagen die Option Windows-Anwendung.

  3. Wenn Sie bereits eine Projektmappe geöffnet haben, wählen Sie Projektmappe schließen.

    Hinweis   In Produktionsprojekten sind in einer Projektmappe sehr oft mehrere Projekte enthalten. In dieser exemplarischen Vorgehensweise schließen Sie dagegen sämtliche geöffneten Projektmappen und erstellen eine neue Projektmappe zusammen mit dem Projekt, so dass keine Interferenzen zwischen Ihrem Vorgehen und bereits vorhandenen Formularen, Datasets usw. auftreten.

  4. Weisen Sie dem Projekt einen Namen zu, der eindeutig ist und den verwendeten Namenskonventionen entspricht. Sie können dieses Projekt beispielsweise Walkthrough_Simple1 nennen.

  5. Nachdem Sie einen Namen zugewiesen und eine neue Projektmappe angegeben haben, klicken Sie auf OK.

    Visual Studio erstellt ein neues Projekt und zeigt ein neues Formular im Windows Form-Designer an.

Erstellen und Konfigurieren eines Datasets

Wie bei den meisten Datenzugriffsszenarien in Windows Forms-Anwendungen arbeiten Sie mit einem Dataset. Ein Dataset ist ein Container (ein Cache), der die Datensätze enthält, mit denen Sie arbeiten möchten.

Hinweis   Die Verwendung eines Datasets ist nur eine Möglichkeit für den Datenzugriff und ist bei manchen Szenarios nicht optimal. Trotzdem sind Datasets normalerweise die richtige Wahl in Windows Forms-Anwendungen. In dieser exemplarischen Vorgehensweise wird ein Dataset verwendet. Weitere Informationen finden Sie unter Empfehlungen zur Zugriffsstrategie auf Daten.

In dieser exemplarischen Vorgehensweise fügen Sie ein Dataset zum Formular hinzu. Da das Dataset noch nicht vorhanden ist, wird es dem Formular nicht manuell hinzugefügt. Stattdessen führen Sie die folgenden Schritte aus:

  • Erstellen Sie mit Hilfe eines Assistenten einen Datenadapter. Der Adapter enthält SQL-Anweisungen zum Lesen und Schreiben von Datenbankinformationen. Mit dem Assistenten können Sie die erforderlichen SQL-Anweisungen festlegen. Gegebenenfalls erstellt der Assistent auch eine Verbindung zur Datenbank.
  • Generieren Sie das Dataset-Schema. Bei diesem Verfahren erstellt Visual Studio eine neue, typisierte Dataset-Klasse, basierend auf den Tabellen und Spalten, auf die Sie zugreifen. Beim Generieren der Dataset-Klasse fügen Sie auch eine Instanz der Klasse zum Formular hinzu.

Es ist wichtig, dass Sie alle Verfahren in diesem Abschnitt ausführen. Anderenfalls verfügt das Formular nicht über das Dataset, das Sie im weiteren Verlauf der exemplarischen Vorgehensweise verwenden.

Weitere Informationen zu Datenadaptern finden Sie unter Einführung in Datenadapter. Weitere Informationen zu Datasets finden Sie unter Einführung in Datasets.

Konfigurieren einer Datenverbindung und eines Datenadapters

Erstellen Sie zu Beginn einen Datenadapter, der die SQL-Anweisung zum nachfolgenden Auffüllen des Datasets enthält. Dabei legen Sie auch eine Verbindung für den Zugriff auf die Datenbank fest. Sie konfigurieren den Datenadapter mit einem Assistenten, wodurch das Erstellen der für den Datenzugriff erforderlichen SQL-Anweisungen vereinfacht wird.

Hinweis   Wenn der Assistent fertig ist, müssen Sie mit dem nächsten Abschnitt fortfahren, um ein Dataset zu generieren und den Formularteil für den Datenzugriff zu vervollständigen.

So erstellen Sie die Datenverbindung und den Datenadapter

  1. Ziehen Sie in der Toolbox von der Registerkarte Daten ein OleDbDataAdapter-Objekt auf das Formular.

    Hinweis   Sie können auch das SqlDataAdapter-Objekt verwenden, das für SQL Server 7.0 oder höher optimiert ist. In dieser exemplarischen Vorgehensweise verwenden Sie OleDbDataAdapter, da dieses Objekt generischer ist und ADO.NET-Zugriff auf alle OLE DB-kompatiblen Datenquellen bietet.

    Der Datenadapter-Konfigurations-Assistent wird gestartet. Er bietet Unterstützung sowohl beim Herstellen der Verbindung als auch beim Erstellen des Adapters.

  2. Verfahren Sie im Assistenten wie folgt:

    1. Erstellen oder wählen Sie auf der zweiten Seite eine Verbindung aus, die auf die SQL Server-Datenbank Pubs zeigt. (Klicken Sie auf der ersten Seite auf Weiter, um zur zweiten Seite zu gelangen.)

    2. Legen Sie auf der dritten Seite fest, dass für den Datenbankzugriff eine SQL-Anweisung verwendet werden soll.

    3. Erstellen Sie auf der vierten Seite die folgende SQL-Anweisung:

      SELECT au_id, au_lname, au_fname, city, state, phone, contract
      FROM authors
      

      Wenn Sie zum Erstellen der SQL-Anweisung Hilfe benötigen, klicken Sie auf Abfrage-Generator, um den Abfrage-Generator zu starten.

      Hinweis   In dieser exemplarischen Vorgehensweise füllen Sie das Dataset mit allen Zeilen aus der Tabelle Authors auf. In Produktionsanwendungen optimieren Sie den Datenzugriff in der Regel dadurch, dass Sie eine Abfrage erstellen, die nur die erforderlichen Spalten und Zeilen zurückgibt. Ein Beispiel finden Sie unter Exemplarische Vorgehensweise: Anzeigen von Daten in Windows Forms mit Hilfe von parametrisierten Abfragen unter Verwendung von Visual J#.

    Der Assistent erstellt eine Verbindung (OleDbConnection1) mit Informationen über den Zugriff auf die Datenbank. Außerdem verfügen Sie über einen Datenadapter (OleDbDataAdapter1) mit einer Abfrage, die festlegt, auf welche Tabelle und Spalten in der Datenbank zugegriffen werden soll.

  3. Wenn der Assistent fertig ist, erstellen Sie das Dataset basierend auf der vorher erstellten SQL-Abfrage. Weitere Informationen finden Sie im nächsten Abschnitt.

Erstellen des Datasets

Nach dem Erstellen der Elemente für die Verbindung zur Datenbank und der Definition der gewünschten Informationen (über den SQL-Befehl im Datenadapter) können Sie von Visual Studio ein Dataset erstellen lassen. Visual Studio kann das Dataset auf der Grundlage der für den Datenadapter angegebenen Abfrage automatisch generieren. Das Dataset ist eine Instanz der auf einem entsprechenden XML-Schema (XSD-Datei) basierenden DataSet-Klasse zur Beschreibung der Elemente der Klasse (Tabelle, Spalten und Einschränkungen). Weitere Informationen zur Beziehung zwischen Datasets und Schemas finden Sie unter Einführung in den Datenzugriff mit ADO.NET.

So generieren Sie ein Dataset

  1. Wählen Sie im Menü Daten die Option DataSet generieren.

    Tipp   Klicken Sie in das Formular, wenn das Menü Daten nicht angezeigt wird. Das Formular muss den Fokus für die Anzeige des Menüs haben.

    Das Dialogfeld DataSet generieren wird angezeigt.

  2. Wählen Sie die Option Neu, und bezeichnen Sie das Dataset dsAuthors.

    In der Liste unterhalb von Wählen Sie die Tabelle(n) aus, die zum Dataset hinzugefügt werden soll(en) sollte die Tabelle Authors markiert sein.

  3. Vergewissern Sie sich, dass Dataset zu Designer hinzufügen aktiviert ist, und klicken Sie auf OK.

    Visual Studio generiert eine typisierte DataSet-Klasse (dsAuthors) und ein Schema zur Definition des Datasets. Das neue Schema (dsAuthors.xsd) wird im Projektmappen-Explorer angezeigt.

    Tipp   Klicken Sie im Projektmappen-Explorer auf Alle Dateien anzeigen, um die abhängige JSL-Datei der Schemadatei anzuzeigen, die den Code zur Definition der neuen Dataset-Klasse enthält.

    Schließlich wird dem Formular in Visual Studio eine Instanz der neuen Dataset-Klasse (dsAuthors1) hinzugefügt.

Sie haben nun alle Vorkehrungen getroffen, um Informationen aus der Datenbank abzurufen und einem Dataset hinzuzufügen. Sie können jetzt ein Formular erstellen, in dem die Daten angezeigt werden.

Hinzufügen eines DataGrid-Steuerelements zum Anzeigen der Daten

In dieser exemplarischen Vorgehensweise fügen Sie ein einziges Steuerelement, ein DataGrid-Steuerelement, hinzu, mit dem sämtliche Datensätze aus dem Dataset gleichzeitig angezeigt werden können. Eine Alternative wäre die Verwendung einzelner Steuerelemente, z. B. Textfelder, um jeweils einen Datensatz anzuzeigen. In diesem Fall müssen Sie dann dem Formular auch Navigationselemente hinzufügen. Zur Vereinfachung verwenden Sie deshalb ein Datenblatt.

Hinweis   Ein Beispiel für die Verwendung einzelner Textfelder zur Anzeige von Datensätzen aus einem Dataset finden Sie unter Exemplarische Vorgehensweise: Anzeigen von Daten in Windows Forms mit Hilfe von parametrisierten Abfragen unter Verwendung von Visual J#.

Das Datenblatt muss zur Datenanzeige an das Dataset gebunden sein.

So fügen Sie einem Formular ein gebundenes DataGrid-Steuerelement hinzu

  1. Wechseln Sie durch Klicken auf die Registerkarte oben im aktuellen Fenster zum Formular-Designer, falls dies noch nicht geschehen ist.

  2. Ziehen Sie in der Toolbox von der Registerkarte Windows Forms ein DataGrid-Steuerelement auf das Formular.

  3. Drücken Sie F4, um das Fenster Eigenschaften anzuzeigen.

  4. Wählen Sie in der DataSource-Eigenschaft DsAuthors1 als Datenquelle. (Wählen Sie nicht DsAuthors1.Authors.)

  5. Wählen Sie in der DataMember-Eigenschaft authors.

    Durch das Festlegen dieser Eigenschaften wird die Datentabelle Authors im Dataset DsAuthors1 an das Datenblatt gebunden.

  6. Ändern Sie die Größe des Datenblattes, um alle Spalten anzuzeigen. Durch Ändern der Höhe können Sie mehrere Datensätze aus der Tabelle Authors anzeigen.

Auffüllen des DataGrid-Steuerelements

Obwohl das Datenblatt an das von Ihnen erstellte Dataset gebunden ist, wird das Dataset selbst nicht automatisch mit Daten gefüllt. Sie müssen vielmehr das Dataset selbst füllen, indem Sie eine Datenadaptermethode aufrufen. Weitere Informationen zum Füllen von Datasets finden Sie unter Einführung in Datasets.

So füllen Sie das DataGrid-Steuerelement auf

  1. Ziehen Sie in der Toolbox von der Registerkarte Windows Forms ein Button-Steuerelement auf das Formular.

  2. Bezeichnen Sie die Schaltfläche mit btnLoad, und ändern Sie die Beschriftung, indem Sie die Text-Eigenschaft auf Load setzen.

  3. Doppelklicken Sie auf die Schaltfläche, um eine Ereignisbehandlungsmethode für das Click-Ereignis zu erstellen.

  4. Löschen Sie in der Methode das von Ihnen erstellte Dataset, rufen Sie dann die Fill-Methode des Datenadapters auf, und übergeben Sie das aufzufüllende Dataset.

    Das folgende Beispiel zeigt, wie die vollständige Methode aussieht:

    // Visual J#
    private void btnLoad_Click(Object sender, System.EventArgs e)
    {
       dsAuthors1.Clear();
       oleDbDataAdapter1.Fill(dsAuthors1);
       oleDbConnection1.Close(); 
    }
    

Aktualisieren der Datenbank

Wenn Benutzer Änderungen im Datenblatt vornehmen, speichert das Steuerelement automatisch den aktualisierten Datensatz im Dataset. In Windows Forms schreibt die Architektur zur Datenbindung die Werte datengebundener Steuerelemente in die Datenzeilen, an die sie gebunden sind.

Hinweis   In Web Form-Seiten funktioniert die Datenbindung etwas anders. Ein schrittweises Beispiel für die Datenbindung in Web Forms-Seiten finden Sie unter Exemplarische Vorgehensweise: Anzeigen von Daten in einer Web Forms-Seite mit Hilfe von Visual J# und Exemplarische Vorgehensweise: Aktualisieren von Daten mit Hilfe einer Datenbank-Aktualisierungsabfrage in Web Forms unter Verwendung von Visual J#.

Beim Arbeiten mit Datasets erfordern Aktualisierungen allerdings zwei Stufen. Wenn sich die Daten im Dataset befinden, müssen Sie sie noch aus dem Dataset zur Datenbank senden. Der Datenadapter kann diese Aufgabe mit seiner Update-Methode ausführen, die jeden Datensatz in der angegebenen Datentabelle untersucht und, wenn sich ein Datensatz geändert hat, den entsprechenden Befehl Aktualisieren, Einfügen bzw. Löschen zur Datenbank sendet. Weitere Informationen finden Sie unter Einführung in Dataset-Aktualisierungen.

In dieser exemplarischen Vorgehensweise fügen Sie dem Formular eine Schaltfläche hinzu, mit der Benutzer ihre Aktualisierungen an die Datenbank senden können.

So aktualisieren Sie die Datenbank

  1. Ziehen Sie in der Toolbox von der Registerkarte Windows Forms ein Button-Steuerelement auf das Formular.

  2. Bezeichnen Sie die Schaltfläche mit btnUpdate, und ändern Sie die Beschriftung, indem Sie die Text-Eigenschaft auf Save Changes in Database setzen.

  3. Doppelklicken Sie auf die Schaltfläche, um eine Ereignisbehandlungsmethode für das Click-Ereignis zu erstellen.

  4. Rufen Sie in der Methode die Update-Methode des Datenadapters auf, und übergeben Sie das Dataset mit den Aktualisierungen, die an die Datenbank gesendet werden sollen. Verwenden Sie das MessageBox-Objekt, um den Bestätigungstext anzuzeigen.

    Das folgende Beispiel zeigt, wie die vollständige Methode aussieht:

    //Visual J#
    private void btnUpdate_Click(Object sender, System.EventArgs e)
    {
       oleDbDataAdapter1.Update(dsAuthors1);
       oleDbConnection1.Close(); 
       MessageBox.Show("Database updated!");
    }
    

Testen

Sie können jetzt das Formular testen, um zu überprüfen, ob Autorendaten im Datenblatt angezeigt werden und Benutzer Aktualisierungen vornehmen können.

So testen Sie das Formular

  1. Drücken Sie F5, um das Formular auszuführen.

  2. Klicken Sie, wenn das Formular angezeigt wird, auf die Schaltfläche Laden.

    Im Datenblatt wird eine Liste von Autoren angezeigt.

  3. Nehmen Sie in einem Datensatz im Datenblatt eine Änderung vor.

    Wenn Sie zu einem anderen Datensatz im Datenblatt wechseln, wird die Änderung beibehalten. Merken Sie sich, welche Änderung Sie vorgenommen haben.

  4. Klicken Sie erneut auf die Schaltfläche Laden.

    Dadurch wird das Dataset erneut aus der Datenbank geladen und das Datenblatt aktualisiert. Sie sehen, dass die Änderung, die Sie in Schritt 3 vorgenommen haben, nicht beibehalten wurde, da Sie Änderungen an der Datenbank aus dem Dataset nicht gespeichert haben.

  5. Nehmen Sie erneut in einem Datensatz im Datenblatt eine Änderung vor.

  6. Klicken Sie auf die Schaltfläche Save Changes in Database.

    Das Meldungfeld wird angezeigt, im Datenblatt wurde aber keine Änderung vorgenommen.

  7. Klicken Sie noch einmal auf die Schaltfläche Laden, um Daten aus der Datenbank erneut zu laden.

    Diesmal wird die in Schritt 5 vorgenommene Änderung beibehalten, da die Daten in der Datenbank gespeichert wurden.

Nächste Schritte

In dieser exemplarischen Vorgehensweise wurden die wichtigsten Schritte zum Anzeigen von Daten in einem Formular dargestellt. Zu den Verbesserungen, die Sie in dieser exemplarischen Vorgehensweise am Formular vornehmen können, gehören:

  • Formatieren des Datenblattes durch Ändern von Farbe, Schriftart usw.
  • Festlegen, dass das Datenblatt Daten anzeigt, ohne explizit vom Benutzer geladen zu werden. Fügen Sie dazu dem Konstruktor des Formulars eine Fill-Methode hinzu, und entfernen Sie die Schaltfläche Laden.
  • Nur Anzeigen ausgewählter Informationen im Datenblatt. In vielen Fällen gründen Sie die Anzeige auf Informationen, die der Benutzer zur Laufzeit zur Verfügung stellt (z. B. beim Anzeigen von Autoren nur aus einem bestimmten Ort). Erstellen Sie dazu eine parametrisierte Abfrage. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Anzeigen von Daten in Windows Forms mit Hilfe von parametrisierten Abfragen unter Verwendung von Visual J#.
  • Trennen des Datenzugriffs von der Benutzeroberfläche. In dieser exemplarischen Vorgehensweise haben Sie ein Formular erstellt, das mehr oder weniger direkt (über das Dataset) auf die Daten zugreift. Ein flexibleres und einfacher zu verwaltendes Design ist das Erstellen einer Datenzugriffskomponente, die den Datenzugriff behandelt. Das Formular, also die Benutzeroberfläche, könnte dann gegebenenfalls mit der Komponente interagieren. Die gleiche Komponente könnte von mehreren Formularen (und anderen Komponenten) verwendet werden, wodurch der zusätzliche Aufwand für das Neuentwerfen des Datenzugriffs für jedes erstellte Formular entfällt. Weitere Informationen über das Erstellen komponentenbasierten Datenzugriffs finden Sie unter Exemplarische Vorgehensweise: Erstellen einer verteilten Anwendung mit Hilfe von Visual J#.

Siehe auch

Exemplarische Vorgehensweisen für Windows Forms