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