This is an example of how to use metadata ResultSets that have more than one column.
////////////////////////////////////////////////////////////////////////////////// // // SafeGetUDTs example. This program demonstrates one way to deal with // metadata ResultSets that have more columns in JDK 1.4 than they // had in previous releases. // // Command syntax: // java SafeGetUDTs // ////////////////////////////////////////////////////////////////////////////////// // // This source is an example of the IBM Developer for Java JDBC driver. // IBM grants you a nonexclusive license to use this as an example // from which you can generate similar function tailored to // your own specific needs. // // This sample code is provided by IBM for illustrative purposes // only. These examples have not been thoroughly tested under all // conditions. IBM, therefore, cannot guarantee or imply // reliability, serviceability, or function of these programs. // // All programs contained herein are provided to you "AS IS" // without any warranties of any kind. The implied warranties of // merchantability and fitness for a particular purpose are // expressly disclaimed. // // IBM Developer Kit for Java // (C) Copyright IBM Corp. 2001 // All rights reserved. // US Government Users Restricted Rights - // Use, duplication, or disclosure restricted // by GSA ADP Schedule Contract with IBM Corp. // ////////////////////////////////////////////////////////////////////////////////// import java.sql.*; public class SafeGetUDTs { public static int jdbcLevel; // Note: Static block runs before main begins. // Therefore, there is access to jdbcLevel in // main. { try { Class.forName("java.sql.Blob"); try { Class.forName("java.sql.ParameterMetaData"); // Found a JDBC 3.0 interface. Must support JDBC 3.0. jdbcLevel = 3; } catch (ClassNotFoundException ez) { // Could not find the JDBC 3.0 ParameterMetaData class. // Must be running under a JVM with only JDBC 2.0 // support. jdbcLevel = 2; } } catch (ClassNotFoundException ex) { // Could not find the JDBC 2.0 Blob class. Must be // running under a JVM with only JDBC 1.0 support. jdbcLevel = 1; } } // Program entry point. public static void main(java.lang.String[] args) { Connection c = null; try { // Get the driver registered. Class.forName("com.ibm.db2.jdbc.app.DB2Driver"); c = DriverManager.getConnection("jdbc:db2:*local"); DatabaseMetaData dmd = c.getMetaData(); if (jdbcLevel == 1) { System.out.println("No support is provided for getUDTs. Just return."); System.exit(1); } ResultSet rs = dmd.getUDTs(null, "CUJOSQL", "SSN%", null); while (rs.next()) { // Fetch all the columns that have been available since the // JDBC 2.0 release. System.out.println("TYPE_CAT is " + rs.getString("TYPE_CAT")); System.out.println("TYPE_SCHEM is " + rs.getString("TYPE_SCHEM")); System.out.println("TYPE_NAME is " + rs.getString("TYPE_NAME")); System.out.println("CLASS_NAME is " + rs.getString("CLASS_NAME")); System.out.println("DATA_TYPE is " + rs.getString("DATA_TYPE")); System.out.println("REMARKS is " + rs.getString("REMARKS")); // Fetch all the columns that were added in JDBC 3.0. if (jdbcLevel > 2) { System.out.println("BASE_TYPE is " + rs.getString("BASE_TYPE")); } } } catch (Exception e) { System.out.println("Error: " + e.getMessage()); } finally { if (c != null) { try { c.close(); } catch (SQLException e) { // Ignoring shutdown exception. } } } } }