Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
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 Generics, innere Klassen
10 Die Klassenbibliothek
11 Threads und nebenläufige Programmierung
12 Datenstrukturen und Algorithmen
13 Raum und Zeit
14 Dateien und Datenströme
15 Die eXtensible Markup Language (XML)
16 Grafische Oberflächen mit Swing
17 Grafikprogrammierung
18 Netzwerkprogrammierung
19 Verteilte Programmierung mit RMI und Web–Services
20 JavaServer Pages und Servlets
21 Applets
22 Midlets und die Java ME
23 Datenbankmanagement mit JDBC
24 Reflection und Annotationen
25 Logging und Monitoring
26 Sicherheitskonzepte
27 Java Native Interface (JNI)
28 Dienstprogramme für die Java-Umgebung
Stichwort

Download:
- ZIP, ca. 14,1 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Java ist auch eine Insel (8. Auflage) von Christian Ullenboom
Programmieren mit der Java Standard Edition Version 6
Buch: Java ist auch eine Insel (8. Auflage)

Java ist auch eine Insel (8. Aufl.)
8., aktual. Auflage, geb., mit DVD
1.475 S., 49,90 Euro
Galileo Computing
ISBN 978-3-8362-1371-4
Pfeil 23 Datenbankmanagement mit JDBC
Pfeil 23.1 Das relationale Modell
Pfeil 23.2 Datenbanken und Tools
Pfeil 23.2.1 HSQLDB
Pfeil 23.2.2 Weitere Datenbanken
Pfeil 23.2.3 Eclipse-Plugins zum Durchschauen von Datenbanken
Pfeil 23.3 JDBC und Datenbanktreiber
Pfeil 23.3.1 Treibertypen
Pfeil 23.3.2 JDBC-Versionen
Pfeil 23.4 Eine Beispielabfrage
Pfeil 23.4.1 Schritte zur Datenbankabfrage
Pfeil 23.4.2 Client für HSQLDB-Datenbank
Pfeil 23.5 Mit Java an eine Datenbank andocken
Pfeil 23.5.1 Der Treiber-Manager
Pfeil 23.5.2 Den Treiber laden
Pfeil 23.5.3 Eine Aufzählung aller Treiber
Pfeil 23.5.4 Log-Informationen
Pfeil 23.5.5 Verbindung zur Datenbank auf- und abbauen
Pfeil 23.5.6 DataSource
Pfeil 23.5.7 Gepoolte Verbindungen
Pfeil 23.6 Datenbankabfragen
Pfeil 23.6.1 Abfragen über das Statement-Objekt
Pfeil 23.6.2 Ergebnisse einer Abfrage in ResultSet
Pfeil 23.6.3 Java und SQL-Datentypen
Pfeil 23.6.4 Unicode in der Spalte korrekt auslesen
Pfeil 23.6.5 Eine SQL-NULL und wasNull() bei ResultSet
Pfeil 23.6.6 Wie viele Zeilen hat ein ResultSet?
Pfeil 23.7 Die Ausnahmen bei JDBC
Pfeil 23.8 Elemente einer Datenbank hinzufügen und aktualisieren
Pfeil 23.8.1 Batch-Updates
Pfeil 23.9 ResultSets in Bohnen durch RowSet
Pfeil 23.9.1 Die Schnittstelle RowSet
Pfeil 23.9.2 Implementierungen von RowSet
Pfeil 23.9.3 Der Typ CachedRowSet
Pfeil 23.9.4 Der Typ WebRowSet
Pfeil 23.10 Vorbereitete Anweisungen (Prepared Statements)
Pfeil 23.10.1 PreparedStatement-Objekte vorbereiten
Pfeil 23.10.2 Werte für die Platzhalter eines PreparedStatement
Pfeil 23.11 Transaktionen
Pfeil 23.12 Metadaten
Pfeil 23.12.1 Metadaten über die Tabelle
Pfeil 23.12.2 Informationen über die Datenbank
Pfeil 23.13 Einführung in SQL
Pfeil 23.13.1 Ein Rundgang durch SQL-Abfragen
Pfeil 23.13.2 Datenabfrage mit der Data Query Language (DQL)
Pfeil 23.13.3 Tabellen mit der Data Definition Language (DDL) anlegen
Pfeil 23.14 Zum Weiterlesen


Galileo Computing - Zum Seitenanfang

23.8 Elemente einer Datenbank hinzufügen und aktualisieren Zur nächsten ÜberschriftZur vorigen Überschrift

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 0, 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.

Galileo Computing - Zum Seitenanfang

23.8.1 Batch-Updates topZur vorigen Überschrift

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.






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

 Tipp
Zum Katalog: Coding for Fun





 Coding for Fun


 Buchempfehlungen
Zum Katalog: Objektorientierte Programmierung





 Objektorientierte
 Programmierung


Zum Katalog: Einstieg in Eclipse 3.4






 Einstieg in
 Eclipse 3.4


Zum Katalog: Java 6 lernen mit Eclipse






 Java 6 lernen
 mit Eclipse


Zum Katalog: NetBeans Platform 6






 NetBeans
 Platform 6


Zum Katalog: Java und XML






 Java und XML


Zum Katalog: Visual C# 2008






 Visual C# 2008


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: C++ von A bis Z






 C++ von A bis Z


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




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