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.5 Ein VerwaltungsprogrammZur nächsten Überschrift

In diesem Abschnitt wird ein einfaches Programm (Projekt DBVerwaltung) zur Verwaltung einer Tabelle vorgestellt. Das Programm ermöglicht die grundlegenden Aktionen wie Alle Sehen, Name suchen, Einfügen, Ändern und Löschen, siehe Abbildung 8.25.

Abbildung

Abbildung 8.25 Benutzeroberfläche des Verwaltungsprogramms


Rheinwerk Computing - Zum Seitenanfang

8.5.1 InitialisierungZur nächsten ÜberschriftZur vorigen Überschrift

Zunächst werden einige klassenweit gültige Variablen vereinbart. Außerdem werden beim Laden des Formulars einige allgemeine Einstellungen vorgenommen, die in den verschiedenen Ereignisprozeduren benötigt werden.

Imports System.Data.OleDb

Public Class Form1
Dim con As New OleDbConnection
Dim cmd As New OleDbCommand
Dim reader As OleDbDataReader
Dim pnummer As New ArrayList

Private Sub Form1_Load(...) Handles MyBase.Load
con.ConnectionString =
"Provider=Microsoft.ACE.OLEDB.12.0;" &
"Data Source=C:\Temp\firma.accdb"
cmd.Connection = con
End Sub
[...]
End Class

Listing 8.3 Projekt »DBVerwaltung«, Initialisierung

Zur Erläuterung:

  • Der Namespace System.Data.OleDb wird für die Nutzung der notwendigen Klassen innerhalb des gesamten Formulars importiert.
  • Es werden die Variablen für Verbindung, SQL-Befehl und Reader deklariert.
  • Außerdem wird ein Objekt der Datenstruktur ArrayList deklariert, siehe Abschnitt 4.6.
  • Die Daten für die Verbindung (Provider, Datenquelle) werden bereitgestellt.
  • Der SQL-Befehl wird mit der Verbindung verknüpft.

Rheinwerk Computing - Zum Seitenanfang

8.5.2 Alle Datensätze sehenZur nächsten ÜberschriftZur vorigen Überschrift

Betätigt der Benutzer den Button Alle sehen, werden alle Datensätze angezeigt, siehe Abbildung 8.26. Anschließend könnte man z. B. einen der angezeigten Datensätze markieren, um ihn zu verändern oder zu löschen.

Abbildung

Abbildung 8.26 Alle Datensätze sehen

Die Ereignisprozedur ruft nur die allgemeine Prozedur AlleSehen() auf. Diese wird von mehreren Ereignisprozeduren aufgerufen. In der Prozedur AlleSehen() wird u. a. die allgemeine Prozedur Ausgabe() aufgerufen. Diese wird ebenfalls von verschiedenen Stellen des Programms aufgerufen.

Public Class Form1
[...]
Private Sub cmdAlleSehen_Click(...) Handles ...
AlleSehen()
End Sub

Private Sub AlleSehen()
Try
con.Open()
cmd.CommandText = "select * from personen"
Ausgabe()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
con.Close()

txtName.Text = ""
txtVorname.Text = ""
txtPersonalnummer.Text = ""
txtGehalt.Text = ""
txtGeburtstag.Text = ""
End Sub

Private Sub Ausgabe()
reader = cmd.ExecuteReader()
lstTab.Items.Clear()
pnummer.Clear()
Do While reader.Read()
lstTab.Items.Add(reader("name") & " # " &
reader("vorname") & " # " &
reader("personalnummer") & " # " &
reader("gehalt") & " # " &
reader("geburtstag"))
pnummer.Add(reader("personalnummer"))
Loop
reader.Close()
End Sub
[...]
End Class

Listing 8.4 Projekt »DBVerwaltung«, alle Datensätze sehen

Zur Erläuterung:

  • In der Prozedur AlleSehen() wird zunächst die Verbindung geöffnet.
  • Der SQL-Befehl wird formuliert und gesendet.
  • Anschließend wird die Prozedur Ausgabe() aufgerufen.
  • Die Verbindung wird wieder geschlossen.
  • Die Inhalte der fünf Textfelder werden gelöscht. Dies erzeugt einen Startzustand für alle weiteren, möglichen Aktionen und hilft bei einer besseren Benutzerführung.
  • In der Prozedur Ausgabe() wird der SQL-Befehl ausgeführt. Das Ergebnis wird im Reader gespeichert.
  • Das Objekt der Klasse ArrayList wird mithilfe der Methode Clear() geleert.
  • Die einzelnen Datensätze werden im Listenfeld ausgegeben.
  • Parallel dazu wird die ArrayList pnummer mit den Personalnummern mithilfe der Methode Add() gefüllt. Das Objekt beinhaltet anschließend die Personalnummern unter dem gleichen Index wie die betreffenden Datensätze im Listenfeld. Dies wird zur Auswahl und Anzeige eines einzelnen Datensatzes in den fünf Textfeldern benötigt. Zum Ändern oder Löschen eines Datensatzes muss zuvor ein Datensatz ausgewählt werden.
  • Der Reader wird wieder geschlossen.

Rheinwerk Computing - Zum Seitenanfang

8.5.3 Datensatz einfügenZur nächsten ÜberschriftZur vorigen Überschrift

Falls der Benutzer den Button Einfügen betätigt, wird ein Datensatz eingefügt, der sich aus den Daten in den fünf Textfeldern zusammensetzt. Diese müssen zuvor vom Benutzer gefüllt werden, siehe Abbildung 8.27.

Abbildung

Abbildung 8.27 Ein neuer Datensatz

Die Ereignisprozedur hat den folgenden Code:

Private Sub cmdEinfügen_Click(...) Handles ...
Dim anzahl As Integer

Try
con.Open()
cmd.CommandText =
"insert into personen " &
"(name, vorname, personalnummer, " &
"gehalt, geburtstag) values ('" &
txtName.Text & "', '" &
txtVorname.Text & "', " &
txtPersonalnummer.Text & ", " &
txtGehalt.Text.Replace(",", ".") &
", '" & txtGeburtstag.Text & "')"
'MessageBox.Show(cmd.CommandText)

anzahl = cmd.ExecuteNonQuery()
If anzahl > 0 Then
MessageBox.Show(
"Ein Datensatz eingefügt")
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
MessageBox.Show("Bitte mindestens einen" &
" Namen, eine eindeutige Personal" &
"nummer und ein gültiges Geburts" &
"datum eintragen")
End Try
con.Close()

AlleSehen()
End Sub

Listing 8.5 Projekt »DBVerwaltung«, Datensatz einfügen

Zur Erläuterung:

  • Die Verbindung wird geöffnet.
  • Der SQL-Befehl zum Einfügen wird mit den Inhalten der fünf Textfelder zusammengesetzt. Zur Kontrolle können Sie sich den Befehl mithilfe der Methode MessageBox.Show() ansehen, siehe Abbildung 8.28. Bei den Feldern für Zeichenketten und Datumsangaben achten Sie wieder auf die einfachen Hochkommata.

Abbildung

Abbildung 8.28 Kontrolle des insert-Befehls

  • Falls die eingetragene Personalnummer bereits in einem anderen Datensatz vorkommt, tritt ein Fehler auf und es erscheint eine entsprechende Fehlermeldung.
  • Das Gehalt wird in dem zugehörigen Textfeld mit einem Komma als Dezimaltrennzeichen eingetragen. Zur Speicherung in der Datenbank wird dieses Komma mithilfe der Methode Replace() in einen Punkt umgewandelt.
  • Der SQL-Befehl wird gesendet. Im Erfolgsfall wird ausgegeben, dass ein Datensatz eingefügt werden konnte.
  • Die Verbindung wird wieder geschlossen.
  • Alle Datensätze, einschließlich des neu eingefügten Datensatzes, werden im Listenfeld neu angezeigt.

Rheinwerk Computing - Zum Seitenanfang

8.5.4 Datensatz ändernZur nächsten ÜberschriftZur vorigen Überschrift

Die Daten eines bestimmten Datensatzes werden in den Textfeldern angezeigt, wenn der Benutzer vorher den betreffenden Eintrag im Listenfeld ausgewählt hat. Er kann nun die Daten des Datensatzes ändern. Betätigt er anschließend den Button Ändern, so wird der Datensatz mit den angezeigten Daten aktualisiert.

Die Ereignisprozedur, die für die Anzeige eines Datensatzes in den Textfeldern sorgt, hat folgenden Code:

Private Sub lstTab_SelectedIndexChanged(...
) Handles lstTab.SelectedIndexChanged
Try
con.Open()
cmd.CommandText = "select * from personen" &
" where personalnummer = " &
pnummer(lstTab.SelectedIndex)

reader = cmd.ExecuteReader()
reader.Read()

txtName.Text = reader("name")
txtVorname.Text = reader("vorname")
txtPersonalnummer.Text =
reader("personalnummer")
txtGehalt.Text = reader("gehalt")
txtGeburtstag.Text = reader("geburtstag")

reader.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
con.Close()
End Sub

Listing 8.6 Projekt »DBVerwaltung«, Datensatz anzeigen

Zur Erläuterung:

  • Sobald der Benutzer einen Datensatz in der Liste markiert, wird diese Prozedur aufgerufen.
  • Es wird ein SQL-Befehl zusammengesetzt, in dem der betreffende Datensatz ausgewählt wird. Dazu wird der zugehörige Eintrag (mit der Personalnummer) in der ArrayList pnummer benutzt.
  • Markiert der Benutzer den dritten Datensatz von oben, so steht die Eigenschaft SelectedIndex des Listenfelds auf dem Wert 2. Es wird dann das Element 2 aus der ArrayList pnummer ermittelt. Dies ist die Personalnummer des markierten Datensatzes, denn das Listenfeld und die ArrayList wurden parallel gefüllt.
  • Der SQL-Befehl wird gesendet. Das Ergebnis der Abfrage besteht nur aus einem Datensatz, aufgrund der Eindeutigkeit des Felds personalnummer. Daher muss keine Schleife durchlaufen werden.
  • Es wird ein Datensatz mithilfe der Methode Read() aus dem Reader geholt. Sein Inhalt wird in den fünf Textfeldern dargestellt.

Die Ereignisprozedur zum Ändern des ausgewählten (und gegebenenfalls veränderten) Datensatzes sieht wie folgt aus:

Private Sub cmdÄndern_Click(...) Handles ...
Dim anzahl As Integer

Try
con.Open()
cmd.CommandText =
"update personen set " &
"name = '" & txtName.Text & "', " &
"vorname = '" & txtVorname.Text &
"', " & "personalnummer = " &
txtPersonalnummer.Text & ", " &
"gehalt = " &
txtGehalt.Text.Replace(",", ".") &
", " & "geburtstag = '" &
txtGeburtstag.Text & "' " &
"where personalnummer = " &
pnummer(lstTab.SelectedIndex)
'MessageBox.Show(cmd.CommandText)

anzahl = cmd.ExecuteNonQuery()
If anzahl > 0 Then
MessageBox.Show("Datensatz geändert")
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
MessageBox.Show("Bitte einen Datensatz" &
" auswählen und mindestens einen" &
" Namen, eine eindeutige Personal" &
"nummer und ein gültiges Geburts" &
"datum eintragen")
End Try

con.Close()
AlleSehen()
End Sub

Listing 8.7 Projekt »DBVerwaltung«, Datensatz ändern

Zur Erläuterung:

  • Die Verbindung wird geöffnet.
  • Der SQL-Befehl zum Ändern wird mit den Inhalten der fünf Textfelder zusammengesetzt. Zur Kontrolle können Sie sich den Befehl wiederum mithilfe der Methode MessageBox.Show() ansehen, siehe Abbildung 8.29. Er bezieht sich nur auf den markierten Datensatz, da die zugehörige Personalnummer in der where-Klausel angegeben wurde.

Abbildung

Abbildung 8.29 Kontrolle des update-Befehls

  • Bei dem SQL-Befehl ist wie beim Einfügen auf Folgendes zu achten:
    • einfache Hochkommata bei Zeichenketten und Datumsangaben
    • gültige Zahlen- und Datumsangaben
  • Der SQL-Befehl wird gesendet. Im Erfolgsfall wird ausgegeben, dass ein Datensatz geändert werden konnte.
  • Die Verbindung wird wieder geschlossen.
  • Alle Datensätze, einschließlich des soeben geänderten Datensatzes, werden im Listenfeld neu angezeigt.

Rheinwerk Computing - Zum Seitenanfang

8.5.5 Datensatz löschenZur nächsten ÜberschriftZur vorigen Überschrift

Der Benutzer kann den Datensatz löschen, den er zuvor im Listenfeld ausgewählt hat. Dessen Daten werden zusätzlich in den fünf Textfeldern angezeigt.

Die Ereignisprozedur zum Löschen des ausgewählten Datensatzes hat folgenden Code:

Private Sub cmdLöschen_Click(...) Handles ...
Dim anzahl As Integer
If txtPersonalnummer.Text = "" Then
MessageBox.Show(
"Bitte einen Datensatz auswählen")
Exit Sub
End If
If MessageBox.Show("Wollen Sie den ausge" &
"wählten Datensatz wirklich löschen?",
"Löschen", MessageBoxButtons.YesNo) =
DialogResult.No Then
Exit Sub
End If
Try
con.Open()
cmd.CommandText = "delete from personen " &
"where personalnummer = " &
pnummer(lstTab.SelectedIndex)
'MessageBox.Show(cmd.CommandText)

anzahl = cmd.ExecuteNonQuery()
If anzahl > 0 Then
MessageBox.Show("Datensatz gelöscht")
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

con.Close()
AlleSehen()
End Sub

Listing 8.8 Projekt »DBVerwaltung«, Datensatz löschen

Zur Erläuterung:

  • Es wird zunächst geprüft, ob der Benutzer einen Datensatz ausgewählt hat.
  • Zur Sicherheit wird der Benutzer noch einmal gefragt, ob er den Datensatz wirklich löschen möchte, siehe Abbildung 8.30. Dies ist die übliche Vorgehensweise, um versehentliches Löschen zu vermeiden.

Abbildung

Abbildung 8.30 Rückfrage vor dem Löschen

  • Die Verbindung wird geöffnet.
  • Der SQL-Befehl zum Löschen wird zusammengesetzt, siehe Abbildung 8.31. Er bezieht sich nur auf den markierten Datensatz, da die zugehörige Personalnummer in der where-Klausel angegeben wurde.

Abbildung

Abbildung 8.31 Kontrolle des delete-Befehls

  • Der SQL-Befehl wird gesendet. Im Erfolgsfall wird ausgegeben, dass ein Datensatz gelöscht werden konnte.
  • Die Verbindung wird wieder geschlossen.
  • Alle noch vorhandenen Datensätze, ohne den soeben gelöschten Datensatz, werden im Listenfeld neu angezeigt.

Rheinwerk Computing - Zum Seitenanfang

8.5.6 Datensatz suchenZur vorigen Überschrift

Zur Suche nach einem bestimmten Datensatz muss zuvor im Feld name ein Suchtext eingegeben werden. Nach Betätigung des Buttons Name suchen werden alle Datensätze angezeigt, die den Suchtext an einer beliebigen Stelle im Feld Name enthalten, siehe Abbildung 8.32.

Abbildung

Abbildung 8.32 Suchen mit (Teil-)Name

Anschließend könnte man z. B. einen der angezeigten Datensätze markieren, um ihn zu verändern oder zu löschen. Die Ereignisprozedur sieht wie folgt aus:

Private Sub cmdNameSuchen_Click(...) Handles ...
Try
con.Open()
cmd.CommandText =
"select * from personen where" &
" name like '%" & txtName.Text & "%'"
'MessageBox.Show(cmd.CommandText)
Ausgabe()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
con.Close()
End Sub

Listing 8.9 Projekt »DBVerwaltung«, Suchen im Feld »name«

Zur Erläuterung:

  • Die Verbindung wird geöffnet.
  • Der SQL-Befehl zum Suchen wird zusammengesetzt. Er beinhaltet den Namen, den der Benutzer im zugehörigen Textfeld eingegeben hat, in der where-Klausel. Die Prozentzeichen davor und dahinter sorgen dafür, dass alle Datensätze gefunden werden, die den Suchtext an einer beliebigen Stelle im Feld Name enthalten, siehe Abbildung 8.33.

Abbildung

Abbildung 8.33 Kontrolle des Suchbefehls

  • Es wird die Funktion Ausgabe() aufgerufen. Diese sorgt – wie bei der Ausgabe aller Datensätze – für das Senden des SQL-Befehls und für das Empfangen und Anzeigen des Abfrage-Ergebnisses.
  • Die Verbindung wird wieder geschlossen.


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