Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Neues in Java 7
2 Threads und nebenläufige Programmierung
3 Datenstrukturen und Algorithmen
4 Raum und Zeit
5 Dateien, Verzeichnisse und Dateizugriffe
6 Datenströme
7 Die eXtensible Markup Language (XML)
8 Dateiformate
9 Grafische Oberflächen mit Swing
10 Grafikprogrammierung
11 Netzwerkprogrammierung
12 Verteilte Programmierung mit RMI
13 RESTful und SOAP Web-Services
14 JavaServer Pages und Servlets
15 Applets
16 Datenbankmanagement mit JDBC
17 Technologien für die Infrastruktur
18 Reflection und Annotationen
19 Dynamische Übersetzung und Skriptsprachen
20 Logging und Monitoring
21 Java Native Interface (JNI)
22 Sicherheitskonzepte
23 Dienstprogramme für die Java-Umgebung
Stichwort
Download: - openbook, ca. 21,3 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> / Java 7 - Mehr als eine Insel | vor >>
Java 7 - Mehr als eine Insel von Christian Ullenboom Das Handbuch zu den Java SE-Bibliotheken
Java 7 - Mehr als eine Insel Galileo Computing 1433 S., 2012, geb. 49,90 Euro, ISBN 978-3-8362-1507-7 |
| 16 Datenbankmanagement mit JDBC
|  | 16.1 Relationale Datenbanken
|  |  | 16.1.1 Das relationale Modell
|  | 16.2 Datenbanken und Tools
|  |  | 16.2.1 HSQLDB
|  |  | 16.2.2 Weitere Datenbanken *
|  |  | 16.2.3 Eclipse-Plugins zum Durchschauen von Datenbanken
|  | 16.3 JDBC und Datenbanktreiber
|  |  | 16.3.1 Treibertypen *
|  |  | 16.3.2 JDBC-Versionen *
|  | 16.4 Eine Beispielabfrage
|  |  | 16.4.1 Schritte zur Datenbankabfrage
|  |  | 16.4.2 Ein Client für die HSQLDB-Datenbank
|  |  | 16.4.3 Datenbankbrowser und eine Beispielabfrage unter NetBeans
|  | 16.5 Mit Java an eine Datenbank andocken
|  |  | 16.5.1 Der Treiber-Manager *
|  |  | 16.5.2 Den Treiber laden
|  |  | 16.5.3 Eine Aufzählung aller Treiber *
|  |  | 16.5.4 Log-Informationen *
|  |  | 16.5.5 Verbindung zur Datenbank auf- und abbauen
|  | 16.6 Datenbankabfragen
|  |  | 16.6.1 Abfragen über das Statement-Objekt
|  |  | 16.6.2 Ergebnisse einer Abfrage in ResultSet
|  |  | 16.6.3 Java und SQL-Datentypen
|  |  | 16.6.4 Date, Time und Timestamp
|  |  | 16.6.5 Unicode in der Spalte korrekt auslesen
|  |  | 16.6.6 Eine SQL-NULL und wasNull() bei ResultSet
|  |  | 16.6.7 Wie viele Zeilen hat ein ResultSet? *
|  | 16.7 Elemente einer Datenbank hinzufügen und aktualisieren
|  |  | 16.7.1 Batch-Updates
|  |  | 16.7.2 Die Ausnahmen bei JDBC, SQLException und Unterklassen
|  | 16.8 ResultSet und RowSet *
|  |  | 16.8.1 Die Schnittstelle RowSet
|  |  | 16.8.2 Implementierungen von RowSet
|  |  | 16.8.3 Der Typ CachedRowSet
|  |  | 16.8.4 Der Typ WebRowSet
|  | 16.9 Vorbereitete Anweisungen (Prepared Statements)
|  |  | 16.9.1 PreparedStatement-Objekte vorbereiten
|  |  | 16.9.2 Werte für die Platzhalter eines PreparedStatement
|  | 16.10 Transaktionen
|  | 16.11 Metadaten *
|  |  | 16.11.1 Metadaten über die Tabelle
|  |  | 16.11.2 Informationen über die Datenbank
|  | 16.12 Vorbereitete Datenbankverbindungen
|  |  | 16.12.1 DataSource
|  |  | 16.12.2 Gepoolte Verbindungen
|  | 16.13 JPA-Beispiel mit der NetBeans-IDE
|  |  | 16.13.1 Entity-Beans generieren
|  |  | 16.13.2 Die Quellen im Überblick
|  |  | 16.13.3 Persistence Unit
|  |  | 16.13.4 Ein JPA-Beispielprogramm
|  | 16.14 Zum Weiterlesen
## 16.4 Eine Beispielabfrage ### 16.4.1 Schritte zur Datenbankabfrage Wir wollen kurz die Schritte skizzieren, die für einen Zugriff auf eine relationale Datenbank mit JDBC erforderlich sind: Einbinden der JDBC-Datenbanktreiber in den Klassenpfad unter Umständen Anmelden der Treiberklassen Verbindung zur Datenbank aufbauen eine SQL-Anweisung erzeugen SQL-Anweisung ausführen das Ergebnis der Anweisung holen, bei Ergebnismengen über diese iterieren die Datenbankverbindung schließen Wir beschränken uns im Folgenden auf die Verbindung zum freien Datenbanksystem HSQLDB. ### 16.4.2 Ein Client für die HSQLDB-Datenbank 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 16.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
### 16.4.3 Datenbankbrowser und eine Beispielabfrage unter NetBeans Wer mit NetBeans arbeitet, der kann einfach mit der ab Java 6 mitgelieferten Datenbank Java DB arbeiten, denn NetBeans bringt eine Beispieldatenbank für Java DB mit. Im Folgenden soll die Beispieldatenbank gestartet, die Datenbank mit der Browser untersucht und 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 16.9: Demo-Datenbank starten In der Ausgabe ist zu erkennen, dass die Datenbank gestartet und bereit für Verbindungen ist. Abbildung 16.10: 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 16.11: 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 16.12: 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 16.13: Java-Archive hinzufügen Aus dem JDK-Installationsverzeichnis unter db/lib wählen wir derbyclient.jar. Abbildung 16.14: derbyclient.jar auswählen Öffnen fügt das Jar-Archiv hinzu. Wir wollen das SELECT noch etwas anpassen, und dann folgt: Listing 16.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 | <top> | vor >>
Zum Katalog
Java 7 – Mehr als eine Insel Jetzt bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchempfehlungen
| Java und XML
| Einstieg in Eclipse 3.7
| Android 3
| NetBeans Platform 7
| Java ist auch eine Insel
| Apps entwickeln für Android 4
| Java 7
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das 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