Add SDK 29 sources. Test: N/A Change-Id: Iedb7a31029e003928eb16f7e69ed147e72bb6235
diff --git a/java/sql/ParameterMetaData.java b/java/sql/ParameterMetaData.java new file mode 100644 index 0000000..84eafdc --- /dev/null +++ b/java/sql/ParameterMetaData.java
@@ -0,0 +1,196 @@ +/* + * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package java.sql; + +/** + * An object that can be used to get information about the types + * and properties for each parameter marker in a + * <code>PreparedStatement</code> object. For some queries and driver + * implementations, the data that would be returned by a <code>ParameterMetaData</code> + * object may not be available until the <code>PreparedStatement</code> has + * been executed. + *<p> + *Some driver implementations may not be able to provide information about the + *types and properties for each parameter marker in a <code>CallableStatement</code> + *object. + * + * @since 1.4 + */ + +public interface ParameterMetaData extends Wrapper { + + /** + * Retrieves the number of parameters in the <code>PreparedStatement</code> + * object for which this <code>ParameterMetaData</code> object contains + * information. + * + * @return the number of parameters + * @exception SQLException if a database access error occurs + * @since 1.4 + */ + int getParameterCount() throws SQLException; + + /** + * Retrieves whether null values are allowed in the designated parameter. + * + * @param param the first parameter is 1, the second is 2, ... + * @return the nullability status of the given parameter; one of + * <code>ParameterMetaData.parameterNoNulls</code>, + * <code>ParameterMetaData.parameterNullable</code>, or + * <code>ParameterMetaData.parameterNullableUnknown</code> + * @exception SQLException if a database access error occurs + * @since 1.4 + */ + int isNullable(int param) throws SQLException; + + /** + * The constant indicating that a + * parameter will not allow <code>NULL</code> values. + */ + int parameterNoNulls = 0; + + /** + * The constant indicating that a + * parameter will allow <code>NULL</code> values. + */ + int parameterNullable = 1; + + /** + * The constant indicating that the + * nullability of a parameter is unknown. + */ + int parameterNullableUnknown = 2; + + /** + * Retrieves whether values for the designated parameter can be signed numbers. + * + * @param param the first parameter is 1, the second is 2, ... + * @return <code>true</code> if so; <code>false</code> otherwise + * @exception SQLException if a database access error occurs + * @since 1.4 + */ + boolean isSigned(int param) throws SQLException; + + /** + * Retrieves the designated parameter's specified column size. + * + * <P>The returned value represents the maximum column size for the given parameter. + * For numeric data, this is the maximum precision. For character data, this is the length in characters. + * For datetime datatypes, this is the length in characters of the String representation (assuming the + * maximum allowed precision of the fractional seconds component). For binary data, this is the length in bytes. For the ROWID datatype, + * this is the length in bytes. 0 is returned for data types where the + * column size is not applicable. + * + * @param param the first parameter is 1, the second is 2, ... + * @return precision + * @exception SQLException if a database access error occurs + * @since 1.4 + */ + int getPrecision(int param) throws SQLException; + + /** + * Retrieves the designated parameter's number of digits to right of the decimal point. + * 0 is returned for data types where the scale is not applicable. + * + * @param param the first parameter is 1, the second is 2, ... + * @return scale + * @exception SQLException if a database access error occurs + * @since 1.4 + */ + int getScale(int param) throws SQLException; + + /** + * Retrieves the designated parameter's SQL type. + * + * @param param the first parameter is 1, the second is 2, ... + * @return SQL type from <code>java.sql.Types</code> + * @exception SQLException if a database access error occurs + * @since 1.4 + * @see Types + */ + int getParameterType(int param) throws SQLException; + + /** + * Retrieves the designated parameter's database-specific type name. + * + * @param param the first parameter is 1, the second is 2, ... + * @return type the name used by the database. If the parameter type is + * a user-defined type, then a fully-qualified type name is returned. + * @exception SQLException if a database access error occurs + * @since 1.4 + */ + String getParameterTypeName(int param) throws SQLException; + + + /** + * Retrieves the fully-qualified name of the Java class whose instances + * should be passed to the method <code>PreparedStatement.setObject</code>. + * + * @param param the first parameter is 1, the second is 2, ... + * @return the fully-qualified name of the class in the Java programming + * language that would be used by the method + * <code>PreparedStatement.setObject</code> to set the value + * in the specified parameter. This is the class name used + * for custom mapping. + * @exception SQLException if a database access error occurs + * @since 1.4 + */ + String getParameterClassName(int param) throws SQLException; + + /** + * The constant indicating that the mode of the parameter is unknown. + */ + int parameterModeUnknown = 0; + + /** + * The constant indicating that the parameter's mode is IN. + */ + int parameterModeIn = 1; + + /** + * The constant indicating that the parameter's mode is INOUT. + */ + int parameterModeInOut = 2; + + /** + * The constant indicating that the parameter's mode is OUT. + */ + int parameterModeOut = 4; + + /** + * Retrieves the designated parameter's mode. + * + * @param param the first parameter is 1, the second is 2, ... + * @return mode of the parameter; one of + * <code>ParameterMetaData.parameterModeIn</code>, + * <code>ParameterMetaData.parameterModeOut</code>, or + * <code>ParameterMetaData.parameterModeInOut</code> + * <code>ParameterMetaData.parameterModeUnknown</code>. + * @exception SQLException if a database access error occurs + * @since 1.4 + */ + int getParameterMode(int param) throws SQLException; +}