Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Angewandte Objektorientierung
8 Exceptions
9 Die Funktionsbibliothek
10 Threads und nebenläufige Programmierung
11 Raum und Zeit
12 Datenstrukturen und Algorithmen
13 Dateien und Datenströme
14 Die eXtensible Markup Language (XML)
15 Grafische Oberflächen mit Swing
16 Grafikprogrammierung
17 Netzwerkprogrammierung
18 Verteilte Programmierung mit RMI und Web-Services
19 JavaServer Pages und Servlets
20 Applets
21 Midlets und die Java ME
22 Datenbankmanagement mit JDBC
23 Reflection und Annotationen
24 Logging und Monitoring
25 Sicherheitskonzepte
26 Java Native Interface (JNI)
27 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort
Download: - ZIP, ca. 12,5 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> /Java-Insel | vor >>
Java ist auch eine Insel von Christian Ullenboom Programmieren mit der Java Standard Edition Version 6
Java ist auch eine Insel 7., aktualisierte Auflage geb., mit DVD (November 2007) 1.492 S., 49,90 Euro Galileo Computing ISBN 978-3-8362-1146-8 |
| 22 Datenbankmanagement mit JDBC
|  | 22.1 Das relationale Modell
|  | 22.2 Datenbanken und Tools
|  |  | 22.2.1 HSQLDB
|  |  | 22.2.2 Weitere Datenbanken
|  |  | 22.2.3 Eclipse-Plugins zum Durchschauen von Datenbanken
|  | 22.3 JDBC und Datenbanktreiber
|  |  | 22.3.1 Treibertypen
|  |  | 22.3.2 JDBC-Versionen
|  | 22.4 Eine Beispielabfrage
|  |  | 22.4.1 Schritte zur Datenbankabfrage
|  |  | 22.4.2 Client für HSQLDB-Datenbank
|  | 22.5 Mit Java an eine Datenbank andocken
|  |  | 22.5.1 Der Treiber-Manager
|  |  | 22.5.2 Den Treiber laden
|  |  | 22.5.3 Eine Aufzählung aller Treiber
|  |  | 22.5.4 Log-Informationen
|  |  | 22.5.5 Verbindung zur Datenbank auf- und abbauen
|  |  | 22.5.6 DataSource
|  |  | 22.5.7 Gepoolte Verbindungen
|  | 22.6 Datenbankabfragen
|  |  | 22.6.1 Abfragen über das Statement-Objekt
|  |  | 22.6.2 Ergebnisse einer Abfrage in ResultSet
|  |  | 22.6.3 Java und SQL-Datentypen
|  |  | 22.6.4 Unicode in der Spalte korrekt auslesen
|  |  | 22.6.5 Eine SQL-NULL und wasNull() bei ResultSet
|  |  | 22.6.6 Wie viele Zeilen hat ein ResultSet?
|  | 22.7 Die Ausnahmen bei JDBC
|  | 22.8 Elemente einer Datenbank hinzufügen und aktualisieren
|  |  | 22.8.1 Batch-Updates
|  | 22.9 ResultSets in Bohnen durch RowSet
|  |  | 22.9.1 Die Schnittstelle RowSet
|  |  | 22.9.2 Implementierungen von RowSet
|  |  | 22.9.3 Der Typ CachedRowSet
|  |  | 22.9.4 Der Typ WebRowSet
|  | 22.10 Vorbereitete Anweisungen (Prepared Statements)
|  |  | 22.10.1 PreparedStatement-Objekte vorbereiten
|  |  | 22.10.2 Werte für die Platzhalter eines PreparedStatement
|  | 22.11 Transaktionen
|  | 22.12 Metadaten
|  |  | 22.12.1 Metadaten über die Tabelle
|  |  | 22.12.2 Informationen über die Datenbank
|  | 22.13 Einführung in SQL
|  |  | 22.13.1 Ein Rundgang durch SQL-Anfragen
|  |  | 22.13.2 Datenabfrage mit der Data Query Language (DQL)
|  |  | 22.13.3 Tabellen mit der Data Definition Language (DDL) anlegen
|  | 22.14 Zum Weiterlesen
## 22.8 Elemente einer Datenbank hinzufügen und aktualisieren Bisher haben wir executeQuery() benutzt, um Abfragen zu verfassen. Es lassen sich jedoch auch Einfüge-Operationen vornehmen, denn Tabelleninhalte bleiben nicht unveränderlich. Das SQL-Kommando INSERT fügt Daten ein, und UPDATE aktualisiert sie. Damit Spalten verändert werden können, müssen wir in zwei Schritten vorgehen: eine SQL-Anweisung mit einem UPDATE aufbauen und anschließend executeUpdate() aufrufen. Damit wird die Änderung wirksam. Dies ist eine andere Statement-Methode, bisher kannten wir nur executeQuery(). Neben den Methodennamen gibt es aber noch einen anderen Unterschied: executeUpdate() liefert als Rückgabewert einen int, der angibt, wie viele Zeilen von der Änderung betroffen sind.
Beispiel Folgende SQL-Anweisung ändert die Adresse eines Lieferanten einer fiktiven Relation:
    String updateString = "UPDATE Lieferanten SET Adresse =
      'Uferstraße 80' WHERE Adresse LIKE 'Uferstrasse 78'";
    stmt.executeUpdate( updateString );
Die Methode gibt uns immer zurück, wie viele Zeilen von den Änderungen betroffen sind. Sie ist null, falls das SQL-Statement nichts bewirkt.
    interface java.sql.Statement
    extends Wrapper
int executeUpdate( String sql ) throws SQLException Führt eine SQL-Anweisung aus, die Manipulationen an der Datenbank vornimmt. Die SQL-Anweisungen sind in der Regel INSERT-, UPDATE- oder DELETE-Anweisungen. Zurückgegeben wird die Anzahl der veränderten Zeilen: null, falls eine SQL-Anweisung nichts verändert hat. ### 22.8.1 Batch-Updates Das Einfügen und Ändern großer Mengen von Daten kostet viel Zeit, da für jede Modifikation ein INSERT oder UPDATE über ein Statement-Objekt abgewickelt werden muss. Eine Verbesserung stellen Batch-Updates dar, die in einem Rutsch gleich eine ganze Reihe von Daten zur Datenbank transferieren. Statt mit execute() und deren Varianten zu arbeiten, nutzen wir die Methode executeBatch(). Damit zuvor die einzelnen Aktionen dem Statement-Objekt mitgeteilt werden können, bietet die Klasse die Methoden addBatch() und clearBatch() an. Die Datenbank führt die Anweisungen in der Reihenfolge aus, wie sie im Batch-Prozess eingefügt wurden. Ein Fehler wird über eine BatchUpdateException angezeigt.
Beispiel Wir fügen einige Einträge der Datenbank als Batch hinzu. con sei unser Connection-Objekt.
    int[] updateCounts = null;
    try
    {
      Statement s = con.createStatement();
      s.addBatch( "INSERT INTO Lieferanten VALUES (x,y,z)" );
      s.addBatch( "INSERT INTO Lieferanten VALUES (a,b,c)" );
      s.addBatch( "INSERT INTO Lieferanten VALUES (d,e,f)" );
      updateCounts = s.executeBatch();
    }
    catch ( BatchUpdateException e ) { /* Behandeln! */ }
    catch ( SQLException e ) { /* Behandeln! */ }
Nach dem Abarbeiten von executeBatch() erhalten wir als Rückgabewert ein int-Feld mit den Ergebnissen der Ausführung. Dies liegt daran, dass in der Batch-Verarbeitung ganz unterschiedliche Anweisungen vorgenommen werden können und jede davon einen unterschiedlichen Rückgabewert verwendet. Soll der gesamte Ablauf als Transaktion gewürdigt werden, so setzen wir im try-Block den AutoCommit-Modus auf false, damit nicht jede SQL-Anweisung als einzelne Transaktion gewertet wird. Im Fall eines Fehlers müssen wir im catch-Block ein Rollback ausführen. Übertragen wir dies auf das obere Beispiel, dann müssen nur die beiden Anweisungen für die Transaktion eingesetzt werden.
    try
    {
      con.setAutoCommit( false );
      Statement s .....
      ...
    }

    catch ( BatchUpdateException e )
    {
      con.rollback();
    }
### Ihr Kommentar Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.
Name |
E-Mail |
Ihr Kommentar |
<< zurück | <top> | vor >>

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