package types; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; import java.text.DateFormat; import java.text.SimpleDateFormat; public class TypedResults { public static void main(String[] args) { try { Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection( "jdbc:postgresql:test", "postgres", "postgres"); Statement statement = con.createStatement(); ResultSet result = statement.executeQuery("SELECT * FROM employees"); ResultSetMetaData data = result.getMetaData(); result.next(); int columns = data.getColumnCount(); System.out.println("ResulSet consists of 4 columns:"); for (int i = 1; i <= columns; i++) { System.out.println("Column no. " + i + ":"); System.out.println( "Name :" + data.getColumnName(i)); System.out.println( "Class :" + data.getColumnClassName(i)); System.out.println( "Type :" + data.getColumnTypeName(i)); // Typspezifische Auswertung der Ergebnisse über // getColumnClassName if (data .getColumnClassName(i) .equals(String.class.getName())) { System.out.println("This is a String"); StringBuffer buffer = new StringBuffer(result.getString(i)); System.out.println( "example output: " + buffer.reverse().toString()); } if (data .getColumnClassName(i) .equals(java.sql.Date.class.getName())) { System.out.println("This is a java.sql.Date"); Date date = result.getDate(i); DateFormat format = SimpleDateFormat.getDateInstance(); System.out.println( "example ouput: " + format.format(date)); } } // Alternativ kann man mit getObject dem JDBC-Treiber // die Wahl des entsprechenden Objekttyps überlassen // und danach per instanceof die Ergebnisse je nach // Typ behandeln if (result.next()) { for (int i = 1; i <= columns; i++) { Object o = result.getObject(i); if (o == null) continue; System.out.println("Column no. " + i + ":"); System.out.println("Class :" + o.getClass()); if (o instanceof String) { System.out.println("This is a String"); StringBuffer buffer = new StringBuffer((String) o); System.out.println( "example output: " + buffer.reverse().toString()); } if (o instanceof java.sql.Date) { System.out.println( "This is a java.sql.Date"); Date date = (java.sql.Date) o; DateFormat format = SimpleDateFormat.getDateInstance(); System.out.println( "example output: " + format.format(date)); } } } } catch (Exception e) { e.printStackTrace(); } } }