Galileo Computing < openbook > Galileo 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 Neues in Visual Basic 2008
12 Beispielprojekte
A Installation
B Lösungen der Übungsaufgaben
Stichwort

Download:
- ZIP, ca. 8,4 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Einstieg in Visual Basic 2008 von Thomas Theis
Inkl. zahlreicher Beispiele und Uebungen
Buch: Einstieg in Visual Basic 2008

Einstieg in Visual Basic 2008
geb., mit DVD
442 S., 24,90 Euro
Galileo Computing
ISBN 978-3-8362-1192-5
Online bestellenJetzt online bestellen
* versandkostenfrei in (D) und (A)
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 MS Access
    Pfeil 8.2.1 Aufbau von MS Access
    Pfeil 8.2.2 Datenbank-Entwurf in MS Access 2007
    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 Auswahlabfrage
    Pfeil 8.3.6 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.5 Ein Verwaltungsprogramm
    Pfeil 8.5.1 Initialisierung
    Pfeil 8.5.2 Alle Datensätze sehen
    Pfeil 8.5.3 Einen Datensatz einfügen
    Pfeil 8.5.4 Einen Datensatz ändern
    Pfeil 8.5.5 Einen Datensatz löschen
    Pfeil 8.5.6 Einen Datensatz suchen
  Pfeil 8.6 Verbindung zu MySQL
    Pfeil 8.6.1 ODBC-Treiber
    Pfeil 8.6.2 Datenquelle
    Pfeil 8.6.3 Datenbankzugriff mit Visual Basic
    Pfeil 8.6.4 .NET-Treiber
  Pfeil 8.7 Verbindung zu MS SQL Server 2005
    Pfeil 8.7.1 Anlegen einer Datenbank
    Pfeil 8.7.2 Datenbankzugriff mit Visual Basic


Galileo Computing - Zum Seitenanfang

8.5 Ein Verwaltungsprogramm  Zur nächsten ÜberschriftZur vorigen Überschrift

In diesem Abschnitt wird ein einfaches Programm (p0802) zur Verwaltung einer Tabelle vorgestellt. Das Programm ermöglicht die grundlegenden Aktionen wie Anzeigen, Suchen, Einfügen, Ändern und Löschen:

Abbildung 8.31  Benutzeroberfläche des Verwaltungsprogramms


Galileo Computing - Zum Seitenanfang

8.5.1 Initialisierung  Zur nächsten ÜberschriftZur vorigen Überschrift

Zunächst werden einige modulweite Variablen vereinbart und beim Formular-Load-Ereignis allgemeine Einstellungen vorgenommen, die in den verschiedenen Ereignisprozeduren benötigt werden.

Public Class frm0802 
   Dim con As New OleDb.OleDbConnection 
   Dim cmd As New OleDb.OleDbCommand 
   Dim reader As OleDb.OleDbDataReader 
   Dim pnummer As New ArrayList 
   Private Sub frm0802_Load( ... ) Handles MyBase.Load 
      con.ConnectionString = _ 
         "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
         "Data Source=C:\Temp\firma.mdb" 
      cmd.Connection = con 
   End Sub 
[ ... ] 
End Class

Zur Erläuterung:

  • Es werden die Variablen für Verbindung, SQL-Befehl und Reader deklariert.

    ArrayList

  • Außerdem wird ein Objekt der Klasse ArrayList() deklariert. Objekte dieser Klasse ähneln einem Datenfeld. Sie verfügen allerdings u. a. über zwei Möglichkeiten, die in diesem Programm benötigt werden:
  • Am Ende des Felds kann ein Element angefügt werden.
  • Das gesamte Feld kann gelöscht werden.
  • Die Daten für die Verbindung (Provider, Datenquelle) werden bereits gestellt.
  • Der SQL-Befehl wird mit der Verbindung verknüpft.

Galileo Computing - Zum Seitenanfang

8.5.2 Alle Datensätze sehen  Zur nächsten ÜberschriftZur vorigen Überschrift

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

Abbildung 8.32  Alle Datensätze sehen

Allgemeine Prozeduren

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 frm0802 
[ ... ] 
   Private Sub cmdSehen_Click( ... ) Handles ... 
      AlleSehen() 
   End Sub 
[ ... ] 
   Sub AlleSehen() 
      Try 
         con.Open() 
         cmd.CommandText = "select * from personen" 
         Ausgabe() 
      Catch ex As Exception 
         MsgBox(ex.Message) 
      End Try 
      con.Close() 
 
      txtName.Text = "" 
      txtVorname.Text = "" 
      txtPersonalnummer.Text = "" 
      txtGehalt.Text = "" 
      txtGeburtstag.Text = "" 
   End Sub 
 
   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

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.

    Benutzerführung

  • Die Inhalte der fünf Textfelder werden gelöscht. Dies erzeugt einen Startzustand für alle weiteren, möglichen Aktionen und führt zu einer besseren Benutzerführung.
  • In der Prozedur Ausgabe() wird der SQL-Befehl ausgeführt. Das Ergebnis wird im Reader gespeichert.

    Clear

  • Das Objekt der Klasse ArrayList wird mithilfe der Methode Clear() geleert.
  • Die einzelnen Datensätze werden im Listenfeld ausgegeben.

    Add

  • Parallel dazu wird das Objekt der Klasse ArrayList 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.

Galileo Computing - Zum Seitenanfang

8.5.3 Einen Datensatz einfügen  Zur 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.

Abbildung 8.33  Ein neuer Datensatz

Die Ereignisprozedur hat den folgenden Code:

Public Class frm0802 
[ ... ] 
   Private Sub cmdEinfügen_Click( ... ) Handles ... 
      Dim anzahl As Integer 
      If txtPersonalnummer.Text = "" Then 
         MsgBox("Bitte mindestens eine " _ 
            & "Personalnummer eintragen") 
            Exit Sub 
      End If 
 
      Try 
         con.Open() 
         cmd.CommandText = _ 
            "insert into personen " & _ 
            "(name, vorname, personalnummer, " & _ 
            "gehalt, geburtstag) " & _ 
            "values ('" & _ 
            txtName.Text & "', '" & _ 
            txtVorname.Text & "', " & _ 
            txtPersonalnummer.Text & ", " & _ 
            Val(txtGehalt.Text) & ", '" & _ 
            CDate(txtGeburtstag.Text) & "')" 
 
         'MsgBox(cmd.CommandText) 
         anzahl = cmd.ExecuteNonQuery() 
         If anzahl > 0 Then 
            MsgBox("Es wurde ein Datensatz eingefügt") 
         End If 
      Catch ex As Exception 
         MsgBox(ex.Message) 
      End Try 
 
      con.Close() 
      AlleSehen() 
   End Sub 
[ ... ] 
End Class

Zur Erläuterung:

  • Es wird zunächst geprüft, ob zumindest im Textfeld für die Personalnummer ein Eintrag vorliegt. Ein leerer Eintrag in diesem Feld, auf dem ein eindeutiger Index liegt, ergibt in der Datenbank keinen Sinn.

    Abbildung 8.34  Datensatz ohne Personalnummer

  • Die Verbindung wird geöffnet.
  • Der SQL-Befehl zum Einfügen wird mit den Inhalten der fünf Textfelder zusammengesetzt. Bei den Feldern für Zeichenketten und Datumsangaben muss auf die einfachen Hochkommata geachtet werden.

    Doppelte Personalnummer

  • Falls die eingetragene Personalnummer bereits in einem anderen Datensatz vorkommt, tritt ein Fehler auf und die folgende Fehlermeldung erscheint: »Die von Ihnen vorgenommenen Änderungen an der Tabelle konnten nicht vorgenommen werden, da der Index, Primärschlüssel oder die Beziehung mehrfach vorkommende Werte enthalten würde. Ändern Sie die Daten in den Feldern, die gleiche Daten enthalten, entfernen Sie den Index, oder definieren Sie den Index neu, damit doppelte Einträge möglich sind, und versuchen Sie es erneut.«

    Abbildung 8.35  Doppelte Personalnummer

  • Der Inhalt des Textfelds für das Gehalt wird mithilfe der Funktion Val() in eine Zahl umgewandelt. Falls sich im Textfeld keine Zahl befindet, wird der Wert 0 für das Gehalt genommen.

    Ungültiges Datum

  • Der Inhalt des Textfelds für den Geburtstag wird mithilfe der Funktion CDate() in ein Datum umgewandelt. Falls dies nicht gelingt, tritt ein Fehler mit Fehlermeldung auf.

    Abbildung 8.36  Falsches Datumsformat

  • 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.

Galileo Computing - Zum Seitenanfang

8.5.4 Einen Datensatz ändern  Zur nächsten ÜberschriftZur vorigen Überschrift

Die Daten eines bestimmten Datensatzes werden in den Textfeldern angezeigt, wenn der Benutzer vorher den betreffenden Datensatz 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 (siehe Abbildung 8.37).

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

Public Class frm0802 
[ ... ] 
   Private Sub lstTab_SelectedIndexChanged( ... ) _ 
            Handles ... 
      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 
         MsgBox(ex.Message) 
      End Try 
      con.Close() 
   End Sub 
[ ... ] 
End Class

Abbildung 8.37  Änderung eines Datensatzes, vor dem OK

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:

Public Class frm0802 
[ ... ] 
   Private Sub cmdÄndern_Click( ... ) Handles ... 
      Dim anzahl As Integer 
      If txtPersonalnummer.Text = "" Then 
         MsgBox("Bitte einen Datensatz auswählen " _ 
            & "und mindestens eine Personalnummer " _ 
            & "eintragen") 
         Exit Sub 
      End If 
 
      Try 
         con.Open() 
         cmd.CommandText = _ 
            "update personen set " & _ 
            "name = '" & txtName.Text & "', " & _ 
            "vorname = '" & txtVorname.Text & "', " & _ 
            "personalnummer = " _ 
               & txtPersonalnummer.Text & ", " & _ 
            "gehalt = " _ 
               & Val(txtGehalt.Text) & ", " & _ 
            "geburtstag = '" _ 
               & CDate(txtGeburtstag.Text) & "' " & _ 
            "where personalnummer = " _ 
               & pnummer(lstTab.SelectedIndex) 
 
         'MsgBox(cmd.CommandText) 
         anzahl = cmd.ExecuteNonQuery() 
         If anzahl > 0 Then 
            MsgBox("Es wurde ein Datensatz geändert") 
         End If 
      Catch ex As Exception 
         MsgBox(ex.Message) 
      End Try 
      con.Close() 
 
      AlleSehen() 
   End Sub 
[ ... ] 
End Class

Zur Erläuterung:

  • Wie beim Einfügen eines neuen Datensatzes wird zunächst geprüft, ob zumindest im Textfeld für die Personalnummer ein Eintrag vorliegt. Falls der Benutzer diesen Eintrag gelöscht haben sollte (oder gar keinen Datensatz ausgewählt hat), ergibt die Speicherung in der Datenbank keinen Sinn.
  • Die Verbindung wird geöffnet.

    Ändern

  • Der SQL-Befehl zum Ändern wird mit den Inhalten der fünf Textfelder zusammengesetzt. Er bezieht sich nur auf den markierten Datensatz, da die zugehörige Personalnummer in der where-Klausel angegeben wurde.
  • 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.

Galileo Computing - Zum Seitenanfang

8.5.5 Einen Datensatz löschen  Zur 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:

Abbildung 8.38  Löschen eines Datensatzes, vor dem OK

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

Public Class frm0802 
[ ... ] 
   Private Sub cmdLöschen_Click( ... ) Handles ... 
      Dim anzahl As Integer 
      If txtPersonalnummer.Text = "" Then 
         MsgBox("Bitte einen Datensatz auswählen") 
         Exit Sub 
      End If 
 
      If MsgBox("Wollen Sie den ausgewählten " _ 
            & "Datensatz wirklich löschen?", _ 
            MsgBoxStyle.YesNo) = MsgBoxResult.No Then 
         Exit Sub 
      End If 
 
      Try 
         con.Open() 
         cmd.CommandText = _ 
            "delete from personen " & _ 
            "where personalnummer = " & _ 
            pnummer(lstTab.SelectedIndex) 
         'MsgBox(cmd.CommandText) 
         anzahl = cmd.ExecuteNonQuery() 
         If anzahl > 0 Then 
            MsgBox("Es wurde ein Datensatz gelöscht") 
         End If 
      Catch ex As Exception 
         MsgBox(ex.Message) 
      End Try 
      con.Close() 
 
      AlleSehen() 
   End Sub 
[ ... ] 
End Class

Zur Erläuterung:

  • Wie beim Ändern eines Datensatzes wird zunächst geprüft, ob der Benutzer einen Datensatz ausgewählt hat.

    Löschen

  • Zur Sicherheit wird der Benutzer noch einmal gefragt, ob er den Datensatz wirklich löschen möchte. Dies ist die übliche Vorgehensweise, um versehentliches Löschen zu vermeiden.
  • Die Verbindung wird geöffnet.
  • Der SQL-Befehl zum Löschen wird zusammengesetzt. Er bezieht sich nur auf den markierten Datensatz, da die zugehörige Personalnummer in der where-Klausel angegeben wurde.
  • 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 geänderten Datensatz, werden im Listenfeld neu angezeigt.

Galileo Computing - Zum Seitenanfang

8.5.6 Einen Datensatz suchen  topZur vorigen Überschrift

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

Anschließend könnte man z. B. einen der angezeigten Datensätze markieren, um ihn zu verändern oder zu löschen (siehe Abbildung 8.39).

Abbildung 8.39  Suchen mit (Teil-)Name

Die Ereignisprozedur zum »Suchen nach Name« sieht wie folgt aus:

Public Class frm0802 
[ ... ] 
   Private Sub cmdSuchen_Click( ... ) Handles ... 
      If txtName.Text = "" Then 
         MsgBox("Bitte einen Such-Namen eintragen") 
         Exit Sub 
      End If 
 
      Try 
         con.Open() 
         cmd.CommandText = _ 
            "select * from personen where name like '%" _ 
            & txtName.Text & "%'" 
         'MsgBox(cmd.CommandText) 
         Ausgabe() 
      Catch ex As Exception 
         MsgBox(ex.Message) 
      End Try 
      con.Close() 
   End Sub 
[ ... ] 
End Class

Zur Erläuterung:

  • Es wird zunächst geprüft, ob der Benutzer im Textfeld für den Namen etwas eingetragen hat.
  • Die Verbindung wird geöffnet.

    Suchen

  • 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 Suchbegriff im Feld name an einer beliebigen Stelle enthalten.
  • 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.


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  Zum Katalog
Zum Katalog: Einstieg in Visual Basic 2008






Einstieg in Visual Basic 2008
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Visual Basic 2008






 Visual Basic 2008


Zum Katalog: Einstieg in Visual C++ 2008






 Einstieg in
 Visual C++ 2008


Zum Katalog: Einstieg in Visual C# 2008






 Einstieg in
 Visual C# 2008


Zum Katalog: Visual C# 2008






 Visual C# 2008


Zum Katalog: Visual C# - Video-Training






 Visual C# -
 Video-Training


Zum Katalog: Einstieg in PHP 5 und MySQL 5






 Einstieg in PHP 5
 und MySQL 5


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2008
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, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de