1f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.sql; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * An interface used to get information about the types and properties of 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * parameters in a {@code PreparedStatement}. 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2436b3cdfbcd219d0308753d919638262c16fd34daJeremy Sharpepublic interface ParameterMetaData extends Wrapper { 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Indicates that the parameter mode is {@code IN}. 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int parameterModeIn = 1; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Indicates that the parameter mode is {@code INOUT}. 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int parameterModeInOut = 2; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Indicates that the parameter mode is {@code OUT}. 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int parameterModeOut = 4; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Indicates that the parameter mode is not known. 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int parameterModeUnknown = 0; 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Indicates that a parameter is not permitted to be {@code NULL}. 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int parameterNoNulls = 0; 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Indicates that a parameter is permitted to be {@code NULL}. 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int parameterNullable = 1; 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Indicates that whether a parameter is allowed to be {@code null} or not 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is not known. 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int parameterNullableUnknown = 2; 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the fully-qualified name of the Java class which should be passed as 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a parameter to the method {@code PreparedStatement.setObject}. 65f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param paramIndex 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the index number of the parameter, where the first parameter 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * has index 1. 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the fully qualified Java class name of the parameter with the 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified index. This class name is used for custom mapping 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * between SQL types and Java objects. 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws SQLException 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if a database error happens. 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getParameterClassName(int paramIndex) throws SQLException; 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the number of parameters in the {@code PreparedStatement} for which 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this {@code ParameterMetaData} contains information. 80f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the number of parameters. 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws SQLException 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if a database error happens. 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getParameterCount() throws SQLException; 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the mode of the specified parameter. Can be one of: 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <ul> 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>ParameterMetaData.parameterModeIn</li> 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>ParameterMetaData.parameterModeOut</li> 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>ParameterMetaData.parameterModeInOut</li> 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>ParameterMetaData.parameterModeUnknown</li> 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </ul> 95f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param paramIndex 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the index number of the parameter, where the first parameter 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * has index 1. 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the parameter's mode. 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws SQLException 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if a database error happens. 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getParameterMode(int paramIndex) throws SQLException; 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the SQL type of a specified parameter. 107f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param paramIndex 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the index number of the parameter, where the first parameter 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * has index 1. 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the SQL type of the parameter as defined in {@code 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * java.sql.Types}. 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws SQLException 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if a database error happens. 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getParameterType(int paramIndex) throws SQLException; 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the database-specific type name of a specified parameter. 120f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param paramIndex 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the index number of the parameter, where the first parameter 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * has index 1. 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the type name for the parameter as used by the database. A 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * fully-qualified name is returned if the parameter is a <i>User 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Defined Type</i> (UDT). 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws SQLException 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if a database error happens. 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getParameterTypeName(int paramIndex) throws SQLException; 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the number of decimal digits for a specified parameter. 134f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param paramIndex 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the index number of the parameter, where the first parameter 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * has index 1. 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the number of decimal digits ("the precision") for the parameter. 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code 0} if the parameter is not a numeric type. 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws SQLException 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if a database error happens. 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getPrecision(int paramIndex) throws SQLException; 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the number of digits after the decimal point for a specified 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * parameter. 148f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param paramIndex 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the index number of the parameter, where the first parameter 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * has index 1. 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the number of digits after the decimal point ("the scale") for 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the parameter. {@code 0} if the parameter is not a numeric type. 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws SQLException 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if a database error happens. 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getScale(int paramIndex) throws SQLException; 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets whether {@code null} values are allowed for the specified parameter. 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The returned value is one of: 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <ul> 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>ParameterMetaData.parameterNoNulls</li> 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>ParameterMetaData.parameterNullable</li> 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>ParameterMetaData.parameterNullableUnknown</li> 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </ul> 167f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param paramIndex 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the index number of the parameter, where the first parameter 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * has index 1. 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the int code indicating the nullability of the parameter. 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws SQLException 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if a database error is encountered. 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int isNullable(int paramIndex) throws SQLException; 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets whether values for the specified parameter can be signed numbers. 179f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param paramIndex 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the index number of the parameter, where the first parameter 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * has index 1. 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if values can be signed numbers for this parameter, 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code false} otherwise. 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws SQLException 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if a database error happens. 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isSigned(int paramIndex) throws SQLException; 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 190