This site in english .

Kurzbeschreibung

Dies ist eine kleine Java-Bibliothek, mit deren Hilfe man SQL-Statements von JDBC-Datenbankverbindungen ausgeben kann.

Normalerweise ist keine Ausgabefunktion in den handelsüblichen Treibern vorhanden. Diese Bibliothek behebt dieses Manko, indem sie die originale Datenbankverbindung umschliesst und alle abgesetzten Statements ausgibt.

Am nützlichsten ist dies für Statements, die über PreparedStatement-Objekte abgesetzt werden. Bei diesen gibt es keinen eindeutigen "SQL-String", da alle durch Fragezeichen ('?') angegebenen Parameter dynamisch durch Java-Objekte ersetzt werden. Diese Bibliothek stellt auch für diese Statements brauchbare Strings für die Ausgabe bereit.

Installation & Kurzanleitung

Es wird ein Java Runtime Environment mit mind. Version 1.5 aka. 5.0 benötigt. Dieses kann z.B. von http://www.java.com/de/ heruntergeladen und installiert werden.

Entpacken Sie die Bibliotek jsqllogger.jar in ein beliebiges Verzeichnis und fügen Sie sie zum Classpath der Anwendung hinzu. Beispiel:

java.exe -cp "jsqllogger.jar" -jar <Anwendungs-Jar-Datei>

Benutzen der Bibliothek

Die Biblothek muss so eingebunden werden, dass sie das originale Connection-Objekt, welches vom DriverManager erzeugt wird, umschliesst.

Hier ein Beispiel für die Anbindung einer HSQL-Datenbank

import java.sql.*; 
import de.volkeralthaus.jsqllogger.*;
import de.volkeralthaus.jsqllogger.logger.*;
...
LogConnection conn = null;
try {
   Properties p = new Properties();
   p.put("user", "sa");
   p.put("password", "");
   Class.forName("org.hsqldb.jdbcDriver").newInstance();
   java.sql.Connection realConnection = java.sql.DriverManager.getConnection("jdbc:hsqldb:file:testdb", p);
   conn = new de.volkeralthaus.jsqllogger.LogConnection(realConnection);
   conn.addLogger(LoggerStatementLogger.getDefaultLogger());
   conn.setLogtime(true);
} catch (Exception e) {
   throw new Exception("Error on connecting to database", e);
}
...
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO test (id,name,ts) VALUES (?,?,?);");
pstmt.setInt(1, 10,);
pstmt.setString(2, "foo");
pstmt.setTimestamp(3, new java.sql.Timestamp(System.currentTimeMillis()));
pstmt.executeUpdate();
...

Ergibt folgende Ausgabe:

> 25.02.2006 16:47:33 de.volkeralthaus.jsqllogger.logger.LoggerStatementLogger logStatement
> INFO: INSERT INTO test (id,name,ts) VALUES (1,'foo','2006-02-25 16:47:33.696000000')
> 25.02.2006 16:47:34 de.volkeralthaus.jsqllogger.logger.LoggerStatementLogger logTime
> INFO: Execution time: 00:00.016 (16 ms)

Ausgabe

Jedes Objekt, welches das de.volkeralthaus.jsqllogger.logger.StatementLogger-Interface implementiert, kann zur Ausgabe der SQLs benutzt werden.

Zwei Logger werden bereits mitgeliefert:

Download

jsqllogger-0.1.zip

Offene Todos

:wq!