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 Beispielprojekte
A Installation und technische Hinweise
B Lösungen der Übungsaufgaben
Stichwort

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

Spacer
<< zurück
Einstieg in Visual Basic 2010 von Thomas Theis
Inkl. Visual Studio Express Editions
Buch: Einstieg in Visual Basic 2010

Einstieg in Visual Basic 2010
2., akt. und erw. Aufl., Klappbroschur, mit DVD
467 S., 24,90 Euro
Galileo Computing
ISBN 978-3-8362-1541-1
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 2007
Pfeil 8.2.3 Datenbank-Entwurf in einer älteren Version von Access
Pfeil 8.2.4 Ü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


Galileo Computing - Zum Seitenanfang

8.5 Ein Verwaltungsprogramm Zur nächsten ÜberschriftZur vorigen Ü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 8.25 Benutzeroberfläche des Verwaltungsprogramms


Galileo Computing - Zum Seitenanfang

8.5.1 Initialisierung Zur 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.Jet.OLEDB.4.0;" &
            "Data Source=C:\Temp\firma.mdb"
        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.

ArrayList

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

Galileo Computing - Zum Seitenanfang

8.5.2 Alle Datensätze sehen Zur 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 8.26 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 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.

Benutzerführung

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

Clear()

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

Add()

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

Galileo Computing - Zum Seitenanfang

8.5.3 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, siehe Abbildung 8.27.

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 8.28 Kontrolle des insert-Befehls

Doppelte Personalnummer

  • Falls die eingetragene Personalnummer bereits in einem anderen Datensatz vorkommt, tritt ein Fehler auf und es erscheint eine entsprechende Fehlermeldung.

Dezimaltrennzeichen

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

Galileo Computing - Zum Seitenanfang

8.5.4 Datensatz ändern Zur 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.

Ändern

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

Galileo Computing - Zum Seitenanfang

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

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.

Löschen

  • 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 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.
  • Der SQL-Befehl wird gesendet. Im Erfolgsfall wird ausgegeben, dass ein Datensatz gelöscht werden konnte.
  • Die Verbindung wird wieder geschlossen.

Abbildung 8.31 Kontrolle des delete-Befehls

  • Alle noch vorhandenen Datensätze, ohne den soeben gelöschten Datensatz, werden im Listenfeld neu angezeigt.

Galileo Computing - Zum Seitenanfang

8.5.6 Datensatz suchen topZur 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 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.

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 Suchtext an einer beliebigen Stelle im Feld name enthalten, siehe Abbildung 8.33.

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.


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 2010

Einstieg in Visual Basic 2010
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Visual Basic 2010






 Visual Basic 2010


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Silverlight 4






 Silverlight 4


Zum Katalog: Einstieg in Visual C# 2010






 Einstieg in
 Visual C# 2010


Zum Katalog: Visual C# 2010






 Visual C# 2010


Zum Katalog: Einstieg in PHP 5.3 und MySQL 5.4






 Einstieg in PHP 5.3
 und MySQL 5.4


Zum Katalog: PHP 5.3 und MySQL 5.4






 PHP 5.3 und
 MySQL 5.4


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2010
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