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

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Exceptions
7 Äußere.innere Klassen
8 Besondere Klassen der Java SE
9 Generics<T>
10 Architektur, Design und angewandte Objektorientierung
11 Die Klassenbibliothek
12 Einführung in die nebenläufige Programmierung
13 Einführung in Datenstrukturen und Algorithmen
14 Einführung in grafische Oberflächen
15 Einführung in Dateien und Datenströme
16 Einführung in die <XML>-Verarbeitung mit Java
17 Einführung ins Datenbankmanagement mit JDBC
18 Bits und Bytes und Mathematisches
19 Die Werkzeuge des JDK
A Die Klassenbibliothek
Stichwort

Download:
- Aufgaben, ca. 1,1 MB
- Programme, ca. 12,8 MB

Buch bestellen
Ihre Meinung?

Spacer
Java ist auch eine Insel von Christian Ullenboom
Das umfassende Handbuch
Buch: Java ist auch eine Insel

Java ist auch eine Insel
Galileo Computing
1308 S., 10., aktualisierte Auflage, geb., mit DVD
ca. 49,90 Euro, ISBN 978-3-8362-1802-3
Pfeil 17 Einführung ins Datenbankmanagement mit JDBC
Pfeil 17.1 Relationale Datenbanken
Pfeil 17.1.1 Das relationale Modell
Pfeil 17.2 Einführung in SQL
Pfeil 17.2.1 Ein Rundgang durch SQL-Abfragen
Pfeil 17.2.2 Datenabfrage mit der Data Query Language (DQL)
Pfeil 17.2.3 Tabellen mit der Data Definition Language (DDL) anlegen
Pfeil 17.3 Datenbanken und Tools
Pfeil 17.3.1 HSQLDB
Pfeil 17.3.2 Eclipse-Plugins zum Durchschauen von Datenbanken
Pfeil 17.4 JDBC und Datenbanktreiber
Pfeil 17.5 Eine Beispielabfrage
Pfeil 17.5.1 Schritte zur Datenbankabfrage
Pfeil 17.5.2 Ein Client für die HSQLDB-Datenbank
Pfeil 17.5.3 Datenbankbrowser und eine Beispielabfrage unter NetBeans

Rheinwerk Computing - Zum Seitenanfang

17.5 Eine BeispielabfrageZur nächsten Überschrift


Rheinwerk Computing - Zum Seitenanfang

17.5.1 Schritte zur DatenbankabfrageZur nächsten ÜberschriftZur vorigen Überschrift

Wir wollen kurz die Schritte skizzieren, die für einen Zugriff auf eine relationale Datenbank mit JDBC erforderlich sind:

  1. Einbinden der JDBC-Datenbanktreiber in den Klassenpfad
  2. unter Umständen Anmelden der Treiberklassen
  3. Verbindung zur Datenbank aufbauen
  4. eine SQL-Anweisung erzeugen
  5. SQL-Anweisung ausführen
  6. das Ergebnis der Anweisung holen, bei Ergebnismengen über diese iterieren
  7. die Datenbankverbindung schließen

Wir beschränken uns im Folgenden auf die Verbindung zum freien Datenbanksystem HSQLDB.


Rheinwerk Computing - Zum Seitenanfang

17.5.2 Ein Client für die HSQLDB-DatenbankZur nächsten ÜberschriftZur vorigen Überschrift

Ein Beispiel soll zu Beginn die Programmkonzepte für JDBC veranschaulichen, bevor wir im Folgenden das Java-Programm weiter sezieren. Das Programm in der Klasse FirstSqlAccess nutzt die Datenbank TutegoDB, die sich im Suchpfad befinden muss; wir können ebenso absolute Pfade bei HSQLDB angeben, etwa C:/TutegoDB. Bei der Parametrisierung »jdbc:hsqldb:file:...« von HSQLDB liest die Datenbank beim ersten Start die Daten aus der Datei ein, verwaltet sie im Speicher und schreibt sie am Ende des Programms wieder in eine Datei zurück.

Da wir die Datenbank schon früher mit Demo-Daten gefüllt haben, lässt sich jetzt eine SQL-SELECT-Abfrage absetzen:

Listing 17.1: com/tutego/insel/jdbc/FirstSqlAccess.java

package com.tutego.insel.jdbc;

import java.sql.*;

public class FirstSqlAccess
{
public static void main( String[] args )
{
try
{
Class.forName( "org.hsqldb.jdbcDriver" );
}
catch ( ClassNotFoundException e )
{
System.err.println( "Keine Treiber-Klasse!" );
return;
}

Connection con = null;

try
{
con = DriverManager.getConnection(
"jdbc:hsqldb:file:TutegoDB;shutdown=true", "sa", "" );
Statement stmt = con.createStatement();

// stmt.executeUpdate( "INSERT INTO CUSTOMER " +
// "VALUES(50,'Christian','Ullenboom','Immengarten 6','Hannover')" );

ResultSet rs = stmt.executeQuery( "SELECT * FROM Customer" );

while ( rs.next() )
System.out.printf( "%s, %s %s%n", rs.getString(1),
rs.getString(2), rs.getString(3) );

rs.close();

stmt.close();
}
catch ( SQLException e )
{
e.printStackTrace();
}
finally
{
if ( con != null )
try { con.close(); } catch ( SQLException e ) { e.printStackTrace(); }
}
}
}

Dem Beispiel ist in diesem Status schon die aufwändige Fehlerbehandlung anzusehen. Das Schließen vom ResultSet und Statement ist vereinfacht, aber okay, weil das finally auf jeden Fall die Connection schließt. Ab Java 7 kann auch try-mit-Ressourcen die Verbindung automatisch schließen.

Hinweis

Es ist möglich, auch ohne ODBC-Eintrag Zugriff auf eine Access-Datenbank aufzubauen – nützlich ist das zum Beispiel dann, wenn der Name der Datenbank erst später bekannt wird.

con = DriverManager.getConnection( "jdbc:odbc:Driver="+
"{Microsoft Access Driver (*.mdb)};DBQ=c:/daten/test.mdb",
"name", "pass" );
Ein ähnlicher String kann auch für den Zugriff auf eine dBase-Datenbank genutzt werden, für die ein ODBC-Treiber angemeldet ist:
jdbc:odbc:Driver={Microsoft dBase Driver (*.dbf)};DBQ=c:\database.dbf


Rheinwerk Computing - Zum Seitenanfang

17.5.3 Datenbankbrowser und eine Beispielabfrage unter NetBeansZur nächsten ÜberschriftZur vorigen Überschrift

Wer mit NetBeans arbeitet, der kann einfach mit der ab Java 6 mitgelieferten Datenbank JavaDB arbeiten, denn NetBeans bringt eine Beispieldatenbank für Java DB mit. Im Folgenden soll

  1. die Beispieldatenbank gestartet,
  2. die Datenbank mit der Browser untersucht und
  3. ein Java-Programm geschrieben werden, das diese Datenbank anspricht.

Beispieldatenbank starten

Ist NetBeans gestartet, wählen wir im Menü Window • Services. Links kommt in der Darstellung ein Punkt Databases hinzu, wobei unser Interesse der Beispieldatenbank dient, zu der wir mit Connect über das Kontextmenü eine Verbindung aufbauen wollen.

Abbildung

Abbildung 17.8: Demo-Datenbank starten

In der Ausgabe ist zu erkennen, dass die Datenbank nun gestartet und bereit für Verbindungen ist.

Abbildung

Abbildung 17.9: Ausgabe nach dem Start der Datenbank

SQL-Anweisungen absetzen

Links ist anschließend der Baum mit vielen Informationen gefüllt, und alle Tabelleninformationen sind zugänglich. Mit der rechten Maustaste und dem Kontextmenü lassen sich anschließend SQL-Anweisungen über Execute Command... an die Datenbank absetzen.

Abbildung

Abbildung 17.10: SQL-Abfragen starten

Es öffnet sich ein SQL-Editor, der Tastaturvervollständigung beherrscht und sogar in die Datenbank schaut, um Tabellen und Spaltennamen korrekt zu vervollständigen.

Abbildung

Abbildung 17.11: Ergebnis einer SQL-Abfrage

JDBC-Beispiel

Das JDBC-Beispiel von eben können wir leicht auf die NetBeans-Datenbank übertragen. Drei Dinge müssen wir anpassen:

  • Der Treiber muss im Klassenpfad stehen.
  • Die Treiberklasse ist org.apache.derby.jdbc.ClientDriver. Das explizite Laden kann aber entfallen, da Java einen JDBC 4-Treiber selbstständig findet, wenn er im Klassenpfad steht.
  • Die Datenbank-URL ist jdbc:derby://localhost:1527/sample.

Die letzten beiden Dinge sind schnell im Quellcode angepasst. Um den Treiber in den Klassenpfad zu setzen, wählen wir links im Projekt bei Libraries das Kontextmenü und dann Add Jar/Folder...

Abbildung

Abbildung 17.12: Java-Archive hinzufügen

Aus dem JDK-Installationsverzeichnis unter db/lib wählen wir derbyclient.jar.

Abbildung

Abbildung 17.13: »derbyclient.jar« auswählen

Öffnen fügt das Jar-Archiv hinzu.

Wir wollen das SELECT noch etwas anpassen, und dann folgt:

Listing 17.2: com/tutego/insel/jdbc/FirstSqlAccess.java

package com.tutego.insel.jdbc;

import java.sql.*;

public class SecondSqlAccess
{
public static void main( String[] args )
{
Connection con = null;

try
{
con = DriverManager.getConnection( "jdbc:derby://localhost:1527/sample",
"app", "app" );
Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(
"SELECT NAME, ADDRESSLINE1, PHONE FROM Customer" );

while ( rs.next() )
System.out.printf( "%s, %s %s%n", rs.getString(1),
rs.getString(2), rs.getString(3) );

rs.close();

stmt.close();
}
catch ( SQLException e )
{
e.printStackTrace();
}
finally
{
if ( con != null )
try { con.close(); } catch ( SQLException e ) { e.printStackTrace(); }
}
}
}


Ihr Kommentar

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

>> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Java ist auch eine Insel





Java ist auch eine Insel
Jetzt bestellen


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

 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Java SE Bibliotheken






 Java SE Bibliotheken


Zum Katalog: Professionell entwickeln mit Java EE 7






 Professionell
 entwickeln mit
 Java EE 7


Zum Katalog: Einstieg in Eclipse






 Einstieg in
 Eclipse


Zum Katalog: Einstieg in Java






 Einstieg in
 Java


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




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


[Rheinwerk Computing]

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