package clobs; import java.io.StringReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class CLOBExample { // Hier der lange String, der in der Datenbank gespeichert // werden soll. // Hier ein Ausschnitt aus den (bisher unveröffentlichten) // Teilen des Manuskripts von Caesars "De bello Gallico" public static final String poem = "Gallia est divisa in partes tres. Omnia est sub rhena," + " altera nominatur lutetia. Hominem ex Gallia semper" + " per illis vocantur verba grava, nihil tenebrae nisi" + " romae respectant. Miles romanem de ordinarii multum" + " vino bebendi quam in Gallia sunt et gallicas" + " molesterent. Altera factum horribilis est pluvium" + " quasi semper ad aqua permeat per multitudinis" + " aquaeductiis in domi nos."; public static void main(String[] args) { try { Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection( "jdbc:postgresql:test", "postgres", "postgres"); // Zuerst einmal die Datenbank sauber machen con.createStatement().executeUpdate( "DELETE FROM poems"); // Das PreparedStatement, mit dem gleich der String // poem auf dreierlei Art in die Datenbank geschrieben // wird PreparedStatement statement = con.prepareStatement( "INSERT INTO poems(name,author,poem) " + "VALUES(?,?,?)"); // StringReader erlaubt einen einfachen java.io.Reader auf // eines Strings StringReader in = new StringReader(poem); // Erster Versuch über die Methode setCharacterStream statement.setString( 1, "De bello Gallico via CharacterStream"); statement.setString(2, "Caesor"); statement.setCharacterStream(3, in, poem.length()); statement.execute(); // Zweiter Versuch über die naheliegende Methode // setString statement.setString( 1, "De bello Gallico via setString"); statement.setString(2, "Caesor"); statement.setString(3, poem); statement.execute(); // Dritter und letzter Versuch über ein Array // von Bytes statement.setString( 1, "De bello Gallico via setBytes"); statement.setString(2, "Caesor"); statement.setBytes(3, poem.getBytes()); statement.execute(); // Hier prüfen wir dann, was in der Datenbank // angekommen ist: ResultSet result = con.createStatement().executeQuery( "SELECT name,author,poem FROM poems"); while (result.next()) { System.out.println( "Name: " + result.getString(1)); System.out.println( "Author: " + result.getString(2)); System.out.println( "Poem: " + result.getString(3)); } // Die Datenbank wieder säubern con.createStatement().executeUpdate( "DELETE FROM poems"); } catch (Exception e) { e.printStackTrace(); } } }