//********************************************************************* // // Copyright (c) 2006-2008 by Teradata Corporation // All Rights Reserved // //********************************************************************* // // File: T20305JD.java // Header: none // Purpose: Demonstrate the JDBC API for retrieving information // about the types and properties of the parameters in // a PreparedStatement. // // The program will: // - Connect as user guest/please // - Prepare an SQL statement // - Obtain and Display Parameter MetaData // - Disconnect. // // JDBC API: java.sql.Connection, // java.sql.PreparedStatement, // java.sql.PreparedStatement.getParameterMetaData, // java.sql.ParameterMetaData.getParameterClassName, // java.sql.ParameterMetaData.getParameterCount, // java.sql.ParameterMetaData.getParameterMode, // java.sql.ParameterMetaData.getParameterType, // java.sql.ParameterMetaData.getParameterTypeName, // java.sql.ParameterMetaData.getPrecision, // java.sql.ParameterMetaData.getScale, // java.sql.ParameterMetaData.isNullable, // java.sql.ParameterMetaData.isSigned // // Version: Created for Teradata V2R6.2 // //********************************************************************* import java.sql.*; public class T20305JD { // Name of the user able to create, drop, and manipulate tables public static String sUser = "guest"; public static String sPassword = "please"; public static void main(String args[]) throws ClassNotFoundException { // Creation of URL to be passed to the JDBC driver String url = "jdbc:teradata://whomooz/TMODE=ANSI,CHARSET=UTF8"; // Insert statement with parameters. Using this to create a PreparedStatement, // we can determine the properties of each parameter. String sInsert = "INSERT INTO employee2 VALUES(?,?,?,?,?,?,?)"; try { System.out.println("\n Sample T20305JD: \n"); System.out.println(" Looking for the Teradata JDBC driver... "); // Loading the Teradata JDBC driver Class.forName("com.teradata.jdbc.TeraDriver"); System.out.println(" JDBC driver loaded. \n"); // Attempting to connect to Teradata System.out.println(" Attempting to connect to Teradata via" + " the JDBC driver..."); // Creating a connection object Connection con = DriverManager.getConnection(url, sUser, sPassword); System.out.println(" User " + sUser + " connected."); System.out.println(" Connection to Teradata established. \n"); try { // Creating a PreparedStatement object from an active connection PreparedStatement prepStmt = con.prepareStatement(sInsert); System.out.println(" PreparedStatement object created. \n"); try { // Create a ParameterMetaData object representing the // properties of the PreparedStatement Parameters ParameterMetaData parmMetaData = prepStmt.getParameterMetaData(); // Retrieve the number of parameters returned int parmCount = parmMetaData.getParameterCount(); System.out.println(" This PreparedStatement has " + parmCount + " parameters.\n"); // For every parameter, display it's information. System.out.println(" Displaying parameter information: "); int i = 1; // Initialize loop counter while(i <= parmCount) { // This code will demonstrate all available methods for // retrieving parameter meta data. System.out.println(); System.out.println(" Parameter " + i); System.out.println(" ------------ "); // Display the parameter's Java Class Name System.out.println(" Parameter ClassName: " + parmMetaData.getParameterClassName(i)); // Display the parameter's Mode String modeText = ""; switch (parmMetaData.getParameterMode(i)) { case ParameterMetaData.parameterModeIn: modeText += "ModeIn"; break; case ParameterMetaData.parameterModeInOut: modeText += "ModeInOut"; break; case ParameterMetaData.parameterModeOut: modeText += "ModeOut"; break; case ParameterMetaData.parameterModeUnknown: modeText += "ModeUnknown"; break; default: break; } System.out.println(" Parameter Mode: " + modeText); // Display the SQL type of the parameter. System.out.println(" Parameter type: " + parmMetaData.getParameterType(i)); // Display the database-specific type name of the parameter. System.out.println(" Parameter type name: " + parmMetaData.getParameterTypeName(i)); // Display precision: the number of decimal digits // Note: default value is 0. System.out.println(" Parameter precision" + " (number of decimal places): " + parmMetaData.getPrecision(i)); // Display the number of digits to the right of the // decimal point. Note: default value is 0. System.out.println(" Precision to the right of" + " the decimal point: " + parmMetaData.getScale(i)); // Display information on whether NULL values are allowed String nullableText = ""; switch (parmMetaData.isNullable(i)) { case ParameterMetaData.parameterNullable: nullableText += "Yes"; break; case ParameterMetaData.parameterNoNulls: nullableText += "No"; break; case ParameterMetaData.parameterNullableUnknown: nullableText += "Unknown"; break; default: break; } System.out.println(" NULLs allowed: " + nullableText); // Display information on whether value is signed System.out.println(" Signed: " + parmMetaData.isSigned(i)); // Increment column counter i++; } } finally { // Close the Preparedstatement prepStmt.close(); System.out.println("\n PreparedStatement object closed. \n"); } } finally { // Close the connection System.out.println(" Closing connection to Teradata..."); con.close(); System.out.println(" Connection to Teradata closed. \n"); } System.out.println(" Sample T20305JD finished. \n"); } catch (SQLException ex) { // A SQLException was generated. Catch it and display // the error information. Note that there could be multiple // error objects chained together. System.out.println(); System.out.println("*** SQLException caught ***"); while (ex != null) { System.out.println(" Error code: " + ex.getErrorCode()); System.out.println(" SQL State: " + ex.getSQLState()); System.out.println(" Message: " + ex.getMessage()); ex.printStackTrace(); System.out.println(); ex = ex.getNextException(); } throw new IllegalStateException ("Sample failed.") ; } } // End main } // End class T20305JD