Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen
3 Fehlerbehandlung
4 Erweiterte Grundlagen
5 Objektorientierte Programmierung
6 Wichtige Klassen in .NET
7 Weitere Elemente eines Windows-Programms
8 Datenbank-Anwendungen mit ADO.NET
9 Internet-Anwendungen mit ASP.NET
10 Zeichnen mit GDI+
11 Beispielprojekte
12 Windows Presentation Foundation
13 Windows Store-Apps für Windows 8
A Installation und technische Hinweise
B Lösungen der Übungsaufgaben
C Inhalt der Buch-DVD
D Der Autor
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Einstieg in Visual Basic 2012 von Thomas Theis
Ideal für Programmiereinsteiger geeignet
Buch: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Rheinwerk Computing
579 S., 3., aktualisierte und erweiterte Auflage 2013, brosch., mit DVD
24,90 Euro, ISBN 978-3-8362-1959-4
Pfeil 8 Datenbank-Anwendungen mit ADO.NET
Pfeil 8.1 Was sind relationale Datenbanken?
Pfeil 8.1.1 Beispiel »Lager«
Pfeil 8.1.2 Indizes
Pfeil 8.1.3 Relationen
Pfeil 8.1.4 Übungen
Pfeil 8.2 Anlegen einer Datenbank in Microsoft Access
Pfeil 8.2.1 Aufbau von Access
Pfeil 8.2.2 Datenbank-Entwurf in Access 2010
Pfeil 8.2.3 Übungen
Pfeil 8.3 Datenbankzugriff mit Visual Basic
Pfeil 8.3.1 Beispiel-Datenbank
Pfeil 8.3.2 Ablauf eines Zugriffs
Pfeil 8.3.3 Verbindung
Pfeil 8.3.4 SQL-Befehl
Pfeil 8.3.5 OleDb
Pfeil 8.3.6 Auswahlabfrage
Pfeil 8.3.7 Aktionsabfrage
Pfeil 8.4 SQL-Befehle
Pfeil 8.4.1 Auswahl mit select
Pfeil 8.4.2 Ändern mit update
Pfeil 8.4.3 Löschen mit delete
Pfeil 8.4.4 Einfügen mit insert
Pfeil 8.4.5 Typische Fehler in SQL
Pfeil 8.5 Ein Verwaltungsprogramm
Pfeil 8.5.1 Initialisierung
Pfeil 8.5.2 Alle Datensätze sehen
Pfeil 8.5.3 Datensatz einfügen
Pfeil 8.5.4 Datensatz ändern
Pfeil 8.5.5 Datensatz löschen
Pfeil 8.5.6 Datensatz suchen
Pfeil 8.6 Abfragen über mehrere Tabellen
Pfeil 8.7 Verbindung zu MySQL
Pfeil 8.7.1 .NET-Treiber
Pfeil 8.8 Arbeiten mit DataSets
Pfeil 8.8.1 Eine Tabelle in Detailansicht
Pfeil 8.8.2 Schließen ohne Speichern verhindern
Pfeil 8.8.3 Eine Tabelle in DataGrid-Ansicht
Pfeil 8.8.4 Mehrere Tabellen mit Relationen

Rheinwerk Computing - Zum Seitenanfang

8.8 Arbeiten mit DataSetsZur nächsten Überschrift

Die Verbindung zwischen einer Anwendung und einer Datenbank kann auch halb-automatisiert, mithilfe der Entwicklungsumgebung über ein so genanntes DataSet aufgenommen werden. Das DataSet dient dabei als Puffer zur Zwischenspeicherung der Daten.

Der Ablauf bei der Benutzung ergibt sich wie folgt:

  • Nach Aufnahme einer Verbindung werden die Daten aus der Datenbank in das DataSet kopiert. Anschließend wird die Verbindung wieder geschlossen.
  • Nach Änderung einzelner oder mehrerer Datensätze des DataSets können die Daten über eine neue Verbindung in der Datenbank gespeichert werden.

Rheinwerk Computing - Zum Seitenanfang

8.8.1 Eine Tabelle in DetailansichtZur nächsten ÜberschriftZur vorigen Überschrift

In einem ersten Beispiel soll auf die Tabelle personen der Access Datenbank firma.accdb über einen DataSet zugegriffen werden.

Zur schnellen Erstellung einer einfachen Datenbankanwendung (Projekt DBDataSet, siehe Abbildung 8.51):

  • Erstellen Sie ein neues WindowsForms-Projekt.
  • Speichern Sie das gesamte Projekt.
  • Rufen Sie im Kontextmenü des Projekts HinzufügenVorhandenes Element auf. Es erscheint das entsprechende Dialogfeld.
  • Wählen Sie die Access-Datenbank firma.accdb in ihrem Originalverzeichnis aus. Sie wird normalerweise bei diesem Vorgang in das Projektverzeichnis kopiert und es werden dort weitere Kopien angelegt. Hier wollen wir aber immer auf das Original zugreifen. Daher wählen Sie im Aufklappmenü des Buttons Hinzufügen den Menüpunkt Als Link hinzufügen, siehe Abbildung 8.46.
  • Nach kurzer Zeit erscheint ein Assistentendialogfeld zum Konfigurieren der Datenquelle.
  • Es ist eine Liste der Tabellen und Abfragen zu sehen. Markieren Sie die Tabelle personen, siehe Abbildung 8.47.

Abbildung

Abbildung 8.46 Datenbank als Link hinzufügen

Abbildung

Abbildung 8.47 Auswahl der Tabelle »personen«

  • Nach dem Fertigstellen sehen Sie nach kurzer Zeit, dass im Projektmappen-Explorer ein Objekt vom Typ DataSet hinzugefügt wurde (firmaDataSet), siehe Abbildung 8.48.

Abbildung

Abbildung 8.48 Objekt vom Typ DataSet

  • Wählen Sie nun im Menü Ansicht den Menüpunkt Weitere FensterDatenquellen.
  • Lassen Sie sich über den Projektmappen-Explorer das Formular der Anwendung anzeigen, falls es momentan nicht sichtbar sein sollte.
  • Wählen Sie in der Datenquellenanzeige im Aufklappmenü der Tabelle personen die Ansicht Details, siehe Abbildung 8.49.

Abbildung

Abbildung 8.49 Ansicht »Details«

  • Ziehen Sie das Symbol der Tabelle personen aus der Datenquellenanzeige in das Formular der Anwendung.
  • Nach kurzer Zeit erscheinen im bzw. unter dem Formular:
    • eine Navigations-Symbolleiste
    • einige (im Formular unsichtbare) Komponenten, siehe Abbildung 8.50
    • ein Satz von Steuerelementen. Das Standardsteuerelement für ein Tabellenfeld ist eine TextBox, für ein Feld vom Typ Datum wird automatisch ein Objekt vom Typ DateTimePicker gewählt.

Abbildung

Abbildung 8.50 Komponenten für den DataSet

  • Dadurch wird eine einfache Ansicht und Aktualisierung der Tabellendaten ermöglicht.
  • Starten Sie die Anwendung, siehe Abbildung 8.51.

Abbildung

Abbildung 8.51 Anwendung mit DataSet

Sie können nun durch die Datensätze navigieren. Sie können sie ändern. Sie können die Anwendung wieder beenden. Nach einem erneuten Start werden Sie feststellen, dass Daten erst nach Betätigung des Symbols Speichern dauerhaft in der Datenbank gespeichert werden. Vorher sind sie nur temporär im DataSet geändert.

Die Navigations-Symbolleiste für den DataSet besteht aus den folgenden Steuerelementen:

  • AddNewItem: zum Bereitstellen eines neuen leeren Datensatzes
  • CountItem: zur Anzeige der Anzahl der Datensätze
  • DeleteItem: zum Löschen eines Datensatzes
  • MoveFirstItem: geht zum ersten Datensatz
  • MoveLastItem: geht zum letzten Datensatz
  • MoveNextItem: geht zum nächsten Datensatz
  • MovePreviousItem: geht zum vorigen Datensatz
  • PositionItem: zur Positionierung auf einem bestimmten Datensatz und zur Anzeige des betreffenden Datensatzes
  • Separator, Separator1, Separator2: zur optischen Trennung der Symbole
  • NavigatorSaveItem: zur Speicherung der Inhalte des DataSets in der Datenbank

Die neuen Komponenten des Projekts:

  • BindingNavigator (hier: PersonenBindingNavigator): zentrale Komponente zur Navigation, hat Verbindung zur BindingSource-Komponente
  • BindingSource (hier: PersonenBindingSource): bildet die Verbindung zwischen den Daten-Steuerelementen (hier: TextBoxen und DateTimePicker) und dem DataSet
  • TableAdapter (hier: PersonenTableAdapter): stellt kurzfristig die Verbindung zwischen dem DataSet und der Datenbank her, zum Empfangen der Daten (von Datenbank zu DataSet) und zum Aktualisieren der Daten (von DataSet zu Datenbank)
  • TableAdapterManager (hier: TableAdapterManager): steuert die Reihenfolge der Aktualisierung der Daten, hier gibt es verschiedene Strategien
  • DataSet: (hier: FirmaDataSet): Puffer zur Zwischenspeicherung der Daten

Rheinwerk Computing - Zum Seitenanfang

8.8.2 Schließen ohne Speichern verhindernZur nächsten ÜberschriftZur vorigen Überschrift

Als nützliche Ergänzung der Anwendung DBDataSet wird noch eine Ereignisprozedur hinzugefügt. Diese wird aufgerufen, sobald der Benutzer das Formular schließen möchte. Es gibt bekanntlich mehrere Möglichkeiten, ein Formular zu schließen:

  • über den Aufruf der Methode Close() des Formulars
  • über den Klick auf das Kreuz oben rechts im Systemmenü
  • über die Tastenkombination Alt + F4

In allen Fällen tritt das Ereignis FormClosing ein. Mit der folgenden Prozedur haben Sie die Möglichkeit, das Schließen des Formulars zu verhindern, falls eine Änderung durchgeführt wurde, ohne dass danach gespeichert wurde:

Private Sub Form1_FormClosing(sender As Object,
e As FormClosingEventArgs
) Handles MyBase.FormClosing
If FirmaDataSet.HasChanges() Then
If MessageBox.Show(
"Beenden, ohne zu speichern?",
"Daten geändert",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question) =
DialogResult.No Then
e.Cancel = True
End If
End If
End Sub

Listing 8.11 Projekt »DBDataSet«, FormClosing-Ereignis

Zur Erläuterung:

  • Die Prozedur zum Ereignis FormClosing bekommt als zweiten Parameter das Objekt e der Klasse FormClosingEventArgs geliefert.
  • Jede Änderung des DataSets wird registriert. Ein DataSet verfügt außerdem über die Methode HasChanges(), mit der Sie feststellen können, ob eine Änderung stattgefunden hat.
  • Falls dies zutrifft, dann wird im vorliegenden Programm gefragt, ob Sie die Anwendung wirklich verlassen möchten ohne zu speichern, siehe Abbildung 8.52. Falls Sie mit Nein antworten, dann wird die Eigenschaft Cancel des Objekts e auf True gesetzt. Dies führt dazu, dass das Schließen des Formulars nicht stattfindet.

Abbildung

Abbildung 8.52 Rückfrage beim Schließen nach Änderung


Rheinwerk Computing - Zum Seitenanfang

8.8.3 Eine Tabelle in DataGrid-AnsichtZur nächsten ÜberschriftZur vorigen Überschrift

Eine weitere, übersichtliche Möglichkeit zur Darstellung und Bearbeitung von Daten aus einer Datenbank stellt das Steuerelement DataGridView dar. Dies wird im Projekt DBDataSetGrid gezeigt, siehe Abbildung 8.53.

Abbildung

Abbildung 8.53 Verwendung eines DataGridView

Erstellen Sie ein neues Projekt. Gehen Sie genau so wie in der Anleitung des vorherigen Projekts vor. Wählen Sie jedoch in der Datenquellenanzeige im Aufklappmenü der Tabelle personen die Ansicht DataGridView, siehe Abbildung 8.54. Nunmehr können Sie alle Datensätze gleichzeitig sehen, ändern und speichern.

Abbildung

Abbildung 8.54 Tabellenansicht mit DataGridView


Rheinwerk Computing - Zum Seitenanfang

8.8.4 Mehrere Tabellen mit RelationenZur vorigen Überschrift

In diesem Abschnitt wird mithilfe eines DataSets eine Anwendung (Projekt DBDataSetMehrereTabellen) mit Zugriff auf die Datenbank projektverwaltung.accdb erstellt. Diese Datenbank beinhaltet mehrere Tabellen und Relationen. Es soll möglich sein, auf die Datensätze der Tabelle projekt, die zugehörigen Datensätze der Tabelle projekt_person und dort über eine Auswahlliste auf den zugehörigen Nachnamen aus der Tabelle person zuzugreifen, also auf Daten aller drei miteinander verbundenen Tabellen, siehe Abbildung 8.55.

Abbildung

Abbildung 8.55 Zugriff auf Inhalte aus drei Tabellen

Die Erstellung:

  • In einem neuen Projekt wird ein Element über den Menüpunkt HinzufügenVorhandenes Element hinzugefügt: ein Link auf die Datei C:\Temp\projektverwaltung.accdb. Dabei werden alle Tabellen eingeschlossen. Damit steht ein DataSet zur Verfügung, der alle Tabellen und Relationen beinhaltet.
  • Aus der Datenquellenansicht wird die Tabelle projekt in der Detail-Ansicht auf das Formular gezogen.
  • Aus der Datenquellenansicht wird diejenige Tabelle projekt_person in der DataGrid-Ansicht auf das Formular gezogen, die in der Hierarchie eine Ebene unterhalb der Tabelle projekt steht, also die in Abbildung 8.56 markierte Tabelle. Damit werden nur die Datensätze der Tabelle projekt_person eingeblendet, die zum jeweiligen Datensatz der Tabelle projekt gehören.

Abbildung

Abbildung 8.56 Tabelle »projekt_person«, auf Tabelle »projekt« bezogen

  • Über den kleinen Pfeil oben rechts am DataGrid lässt sich ein Konfigurationsmenü aufklappen, u. a. mit Zugang zu den Dialogfeldern Spalten bearbeiten (Edit Columns) und Spalten hinzufügen (Add Column), siehe Abbildung 8.57.

Abbildung

Abbildung 8.57 Konfigurationsmenü des DataGridView

  • Im Dialogfeld Spalten bearbeiten entfernen Sie die beiden Spalten pr_id und pe_id. Sie sind für die Ansicht überflüssig bzw. ungünstig zu bedienen.
  • Im Dialogfeld Spalten hinzufügen wählen Sie die Spalte pe_id, den Typ DataGridViewComboBoxColumn und den Headertext pe_nachname, siehe Abbildung 8.58. Damit ist eine weitere Spalte im DataGrid zu sehen, noch ohne Datenbindung und als letzte Spalte.

Abbildung

Abbildung 8.58 Hinzufügen einer neuen Spalte

  • Im Dialogfeld Spalten bearbeiten verschieben Sie die neu hinzugefügte Spalte an die erste Stelle. Es werden die folgenden Eigenschaften zur Datenbindung eingestellt, siehe Abbildung 8.59:
    • DataSource: über Weitere Datenquellen die Tabelle person
    • DisplayMember: das Feld pe_nachname
    • ValueMember: das Feld pe_id

Abbildung

Abbildung 8.59 Eigenschaften der neuen Spalte

DisplayMember liefert die sichtbaren Werte (hier den Nachnamen), wenn der Benutzer die ComboBox aufklappt. ValueMember liefert die unsichtbaren zugehörigen Werte (hier die Personen-ID), über die eine Beziehung zu einer anderen Tabelle hergestellt wird.

Mit diesem Projekt steht Ihnen eine einfache Anwendung mit Zugriff auf Inhalte von drei miteinander verbundenen Tabellen zur Verfügung.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Rheinwerk-Shop: Einstieg in Python






 Einstieg in Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern