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.3 Datenbankzugriff mit Visual Basic  Zur nächsten ÜberschriftZur vorigen Überschrift


Galileo Computing - Zum Seitenanfang

8.3.1 Beispiel-Datenbank  Zur nächsten ÜberschriftZur vorigen Überschrift

In diesem und den folgenden Abschnitten wird mit der MS Access-Datenbank firma gearbeitet. Diese Beispiel-Datenbank kann man direkt von der beiliegenden DVD kopieren. Sie beinhaltet die Tabelle personen zur Aufnahme von Personendaten. Die Tabelle personen hat folgende Struktur:

Abbildung 8.17  Entwurf Tabelle personen

Primärindex

Auf dem Feld personalnummer ist der Primärschlüssel definiert. Es kann also keine zwei Datensätze mit der gleichen Personalnummer geben.

Es gibt bereits drei Datensätze mit den folgenden Inhalten:

Abbildung 8.18  Inhalt Tabelle personen


Galileo Computing - Zum Seitenanfang

8.3.2 Ablauf eines Zugriffs  Zur nächsten ÜberschriftZur vorigen Überschrift

Der Zugriff auf eine Datenbank mit Visual Basic besteht aus folgenden Schritten:

  • Verbindung aufnehmen zur Datenbank
  • Absetzen eines SQL-Befehls an die Datenbank
  • Auswerten des SQL-Befehls
  • Verbindung zur Datenbank schließen

Galileo Computing - Zum Seitenanfang

8.3.3 Verbindung  Zur nächsten ÜberschriftZur vorigen Überschrift

OleDbConnection

Die Verbindung zu einer MS Access-Datenbank wird mithilfe eines Objekts der Klasse OleDbConnection aus dem Namespace OleDb aufgenommen. Ähnliche Klassen gibt es für die Verbindung zu anderen Datenbank-Typen bzw. zu Datenbank-Servern.

ConnectionString

Wichtigste Eigenschaft der Klasse OleDbConnection ist ConnectionString. Hier werden mehrere Eigenschaften für die Art der Verbindung vereinigt. Für MS Access sind dies:

  • der Datenbank-Provider: Microsoft.Jet.OLEDB.4.0
  • die Datenquelle (Data Source): hier ist dies C:\Temp\firma.mdb

Open, Close

Die Methoden Open() und Close() der Klasse OleDbConnection dienen zum Öffnen und Schließen der Verbindung. Eine offene Verbindung sollte so schnell wie möglich wieder geschlossen werden.


Galileo Computing - Zum Seitenanfang

8.3.4 SQL-Befehl  Zur nächsten ÜberschriftZur vorigen Überschrift

Die Abkürzung SQL steht für Structured Query Language. SQL ist eine »strukturierte Abfragesprache«, also eine Sprache, mit deren Hilfe Datenbank-Abfragen ausgeführt werden können. Es gibt grundsätzlich zwei Typen von Abfragen:

    select

  • Auswahlabfragen zur Sichtung von Daten mit dem SQL-Befehl select
  • Aktionsabfragen zur Veränderung von Daten mit den SQL-Befehlen update, delete, insert

Im weiteren Verlauf werden Grundlagen der Sprache SQL vermittelt, sodass einige typische Arbeiten mit Datenbanken durchgeführt werden können.

OleDbCommand

SQL-Befehle werden zu einer MS Access-Datenbank mithilfe eines Objekts der Klasse OleDbCommand aus dem Namespace OleDb gesendet. Die beiden wichtigsten Eigenschaften dieser Klasse sind:

  • Connection: Angabe der Verbindung, über die der SQL-Befehl gesendet wird
  • CommandText: der Text des SQL-Befehls

Für die beiden verschiedenen Abfragetypen bietet die Klasse OleDbCommand die beiden folgenden Methoden:

    ExecuteReader

  • ExecuteReader()dient zum Senden einer Auswahlabfrage und zum Empfangen des Abfrage-Ergebnisses.
  • ExecuteNonQuery()dient zum Senden einer Aktionsabfrage und zum Empfangen einer Zahl. Dies ist die Anzahl der Datensätze, die von der Aktion betroffen waren.

OleDbReader

Das Ergebnis einer Auswahlabfrage wird in einem Objekt der Klasse OleDbReader aus dem Namespace OleDb gespeichert. In diesem Reader stehen alle Datensätze des Ergebnisses mit den Werten der angeforderten Felder.


Galileo Computing - Zum Seitenanfang

8.3.5 Auswahlabfrage  Zur nächsten ÜberschriftZur vorigen Überschrift

Als Beispiel für eine Auswahlabfrage nehmen wir den einfachsten Fall. Man möchte alle Datensätze einer Tabelle mit allen Feldern sehen:

Abbildung 8.19  Alle Datensätze sehen

Das Programm (in p0801):

Public Class frm0801 
   Private Sub cmdAlleSehen_Click( ... ) Handles ... 
      Dim con As New OleDb.OleDbConnection 
      Dim cmd As New OleDb.OleDbCommand 
 
      Dim reader As OleDb.OleDbDataReader 
 
      con.ConnectionString = _ 
         "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
         "Data Source=C:\Temp\firma.mdb" 
      cmd.Connection = con 
      cmd.CommandText = "select * from personen" 
 
      Try 
         con.Open() 
         reader = cmd.ExecuteReader() 
         lstTab.Items.Clear() 
         Do While reader.Read() 
            lstTab.Items.Add(_ 
                 reader("name") & " # " _ 
               & reader("vorname") & " # " _ 
               & reader("personalnummer") & " # " _ 
               & reader("gehalt") & " # " _ 
               & reader("geburtstag")) 
         Loop 
         reader.Close() 
         con.Close() 
      Catch ex As Exception 
         MsgBox(ex.Message) 
      End Try 
 
   End Sub 
End Class

Zur Erläuterung:

  • Es werden die beiden Objekte der Klassen OleDbConnection und OleDbCommand erzeugt.
  • Es wird ein Verweis auf ein Objekt der Klasse OleDbReader erzeugt. Das Objekt selber liefert später die Methode ExecuteReader() der Klasse OleDbCommand.
  • Der ConnectionString wird mit den Informationen für den Provider und die Datenquelle gefüllt.
  • Es wird festgelegt, auf welcher Verbindung der SQL-Befehl gesendet wird.

    SQL-Befehl

  • Der SQL-Befehl select * from personen besteht aus den folgenden Elementen:
  • select ... from ... : wähle Felder... von Tabelle ...
  • *: eine Liste der gewünschten Felder im Abfrage-Ergebnis, * bedeutet alle Felder
  • personen: Name der Tabelle, aus der ausgewählt wird.

    Try...Catch

  • Da es beim Zugriff auf eine Datenbank erfahrungsgemäß zahlreiche Fehlerquellen gibt, sollte er in einem Try...Catch-Block ablaufen. Ähnlich wie beim Zugriff auf eine Datei kann es vorkommen, dass die Datenbank gar nicht am genannten Ort existiert. Auch Fehler bei der SQL-Syntax werden an Visual Basic weitergemeldet. Die verschiedenen möglichen Fehlermeldungen helfen bei der Fehlerfindung.
  • Mit Aufruf der Methode Open() wird die Verbindung geöffnet.
  • Das Kommando wird mit der Methode ExecuteReader() gesendet. Es kommt ein Abfrage-Ergebnis von der Klasse OleDbReader zurück, dieses wird über den Verweis reader erreichbar gemacht.
  • Da man nicht weiß, wie viele Datensätze das Abfrage-Ergebnis enthält, eignet sich zur Ausgabe ein Listenfeld. Dieses wird zuvor geleert.

    Read

  • Die Methode Read() des Reader-Objekts liefert einen Datensatz und setzt einen sogenannten Datensatz-Zeiger auf den nächsten Datensatz. Falls kein Datensatz mehr da ist, also der Datensatz-Zeiger am Ende des Readers steht, wird False geliefert. Dies steuert die Do...Loop-Schleife.
  • Innerhalb eines Datensatzes können die Werte der einzelnen Felder entweder über die Feldnummer oder den Feldnamen angesprochen werden. Hier wird die zweite, anschaulichere Möglichkeit verwendet. Es werden die Werte aller Felder ausgegeben, zur Verdeutlichung getrennt mit dem Zeichen #.
  • Zu guter Letzt müssen noch der Reader und die Verbindung wieder geschlossen werden, jeweils mit Close().

Galileo Computing - Zum Seitenanfang

8.3.6 Aktionsabfrage  topZur vorigen Überschrift

Als Beispiel für eine Aktionsabfrage soll dienen: Alle Gehälter sollen um 5 % erhöht werden, sodass anschließend die Liste wie folgt aussieht (siehe Abbildung 8.20).

Das Programm (ebenfalls in p0801):

Public Class frm0801 
[ ... ] 
   Private Sub cmdÄndern_Click( ... ) Handles ... 
      Dim con As New OleDb.OleDbConnection 
      Dim cmd As New OleDb.OleDbCommand 
      Dim anzahl As Integer 
 
      con.ConnectionString = _ 
          "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
          "Data Source=C:\Temp\firma.mdb" 
      cmd.Connection = con 
      cmd.CommandText = _ 
         "update personen set gehalt = gehalt * 1.05" 
 
      Try 
         con.Open() 
         anzahl = cmd.ExecuteNonQuery() 
         MsgBox("Anzahl Datensätze geändert: " & anzahl) 
         con.Close() 
      Catch ex As Exception 
         MsgBox(ex.Message) 
      End Try 
 
   End Sub 
End Class

Abbildung 8.20  Nach Erhöhung um 5 %

Zur Erläuterung:

  • Der Ablauf ist ähnlich wie bei einer Auswahlabfrage. Es wird allerdings kein Reader benötigt, da es bei Aktionsabfragen kein Abfrage-Ergebnis gibt, das ausgelesen werden könnte.
  • Der SQL-Befehl update personen set gehalt = gehalt * 1.05 besteht aus:
  • update ... set ... (aktualisiere Tabelle ... setze Werte ...)
  • personen (Name der Tabelle, in der aktualisiert wird)
  • gehalt = gehalt * 1.05 (eine oder mehrere Zuweisungen mit neuen Werten für ein oder mehrere Felder)

    ExecuteNonQuery

  • Das Kommando wird mit der Methode ExecuteNonQuery() gesendet. Rückgabewert ist die Anzahl der Datensätze, die von der Aktionsabfrage betroffen waren. Diese werden angezeigt:

Abbildung 8.21  Anzahl geänderte Datensätze



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