1 /*
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 
18 package java.sql;
19 
20 /**
21  * Provides information about the columns returned in a {@code ResultSet}.
22  */
23 public interface ResultSetMetaData extends Wrapper {
24 
25     /**
26      * Indicates that a column cannot contain {@code NULL} values.
27      */
28     public static final int columnNoNulls = 0;
29 
30     /**
31      * Indicates that a column can contain {@code NULL} values.
32      */
33     public static final int columnNullable = 1;
34 
35     /**
36      * Indicates that it is unknown whether a column can contain {@code NULL}s or not.
37      */
38     public static final int columnNullableUnknown = 2;
39 
40     /**
41      * Returns the title of an indexed column's catalog.
42      *
43      * @param column
44      *            the column index, starting at 1.
45      * @return the catalog title.
46      * @throws SQLException
47      *             if there is a database error.
48      */
getCatalogName(int column)49     public String getCatalogName(int column) throws SQLException;
50 
51     /**
52      * Returns the fully-qualified type of the class that is produced when
53      * invoking {@code ResultSet.getObject} to recover this column's value.
54      *
55      * @param column
56      *            the column index, starting at 1.
57      * @return the fully-qualified class name.
58      * @throws SQLException
59      *             if there is a database error.
60      * @see ResultSet#getObject
61      */
getColumnClassName(int column)62     public String getColumnClassName(int column) throws SQLException;
63 
64     /**
65      * Returns number of columns contained in the associated result set.
66      *
67      * @return the column count.
68      * @throws SQLException
69      *             if there is a database error.
70      */
getColumnCount()71     public int getColumnCount() throws SQLException;
72 
73     /**
74      * Returns the indexed column's standard maximum width, expressed in number
75      * of characters.
76      *
77      * @param column
78      *            the column index, starting at 1.
79      * @return the column's max width.
80      * @throws SQLException
81      *             if there is a database error.
82      */
getColumnDisplaySize(int column)83     public int getColumnDisplaySize(int column) throws SQLException;
84 
85     /**
86      * Returns a recommended title for the indexed column, to be used when the
87      * title needs to be displayed.
88      *
89      * @param column
90      *            the column index, starting at 1.
91      * @return the column's title.
92      * @throws SQLException
93      *             if there is a database error.
94      */
getColumnLabel(int column)95     public String getColumnLabel(int column) throws SQLException;
96 
97     /**
98      * Returns the title of the indexed column.
99      *
100      * @param column
101      *            the column index, starting at 1.
102      * @return the column title.
103      * @throws SQLException
104      *             if there is a database error.
105      */
getColumnName(int column)106     public String getColumnName(int column) throws SQLException;
107 
108     /**
109      * Returns the type of the indexed column as SQL type code.
110      *
111      * @param column
112      *            the column index, starting at 1.
113      * @return the column type code.
114      * @throws SQLException
115      *             if there is a database error.
116      * @see Types
117      */
getColumnType(int column)118     public int getColumnType(int column) throws SQLException;
119 
120     /**
121      * Returns the type name of the indexed column.
122      *
123      * @param column
124      *            the column index, starting at 1.
125      * @return the type name.
126      * @throws SQLException
127      *             if there is a database error.
128      */
getColumnTypeName(int column)129     public String getColumnTypeName(int column) throws SQLException;
130 
131     /**
132      * Returns the decimal precision of the indexed column.
133      *
134      * @param column
135      *            the column index, starting at 1.
136      * @return the precision.
137      * @throws SQLException
138      *             if there is a database error.
139      */
getPrecision(int column)140     public int getPrecision(int column) throws SQLException;
141 
142     /**
143      * Returns the number of digits to the right of the decimal point of the
144      * indexed column.
145      *
146      * @param column
147      *            the column index, starting at 1.
148      * @return number of decimal places.
149      * @throws SQLException
150      *             if there is a database error.
151      */
getScale(int column)152     public int getScale(int column) throws SQLException;
153 
154     /**
155      * Returns the name of the indexed columns schema.
156      *
157      * @param column
158      *            the column index, starting at 1.
159      * @return the name of the columns schema.
160      * @throws SQLException
161      *             if there is a database error.
162      */
getSchemaName(int column)163     public String getSchemaName(int column) throws SQLException;
164 
165     /**
166      * Returns the title of the indexed columns table.
167      *
168      * @param column
169      *            the column index, starting at 1.
170      * @return the table title.
171      * @throws SQLException
172      *             if there is a database error.
173      */
getTableName(int column)174     public String getTableName(int column) throws SQLException;
175 
176     /**
177      * Returns an indication of whether the indexed column is automatically
178      * incremented and is therefore read-only.
179      *
180      * @param column
181      *            the column index, starting at 1.
182      * @return {@code true} if it is automatically numbered, {@code false}
183      *         otherwise.
184      * @throws SQLException
185      *             if there is a database error.
186      */
isAutoIncrement(int column)187     public boolean isAutoIncrement(int column) throws SQLException;
188 
189     /**
190      * Returns an indication of whether the case of the indexed column is
191      * important.
192      *
193      * @param column
194      *            the column index, starting at 1.
195      * @return {@code true} if case matters, {@code false} otherwise.
196      * @throws SQLException
197      *             if there is a database error.
198      */
isCaseSensitive(int column)199     public boolean isCaseSensitive(int column) throws SQLException;
200 
201     /**
202      * Returns whether the indexed column contains a monetary amount.
203      *
204      * @param column
205      *            the column index, starting at 1.
206      * @return {@code true} if it is a monetary value, {@code false} otherwise.
207      * @throws SQLException
208      *             if there is a database error.
209      */
isCurrency(int column)210     public boolean isCurrency(int column) throws SQLException;
211 
212     /**
213      * Returns an indication of whether writing to the indexed column is
214      * guaranteed to be successful.
215      *
216      * @param column
217      *            the column index, starting at 1.
218      * @return {@code true} if the write is guaranteed, {@code false} otherwise.
219      * @throws SQLException
220      *             if there is a database error.
221      */
isDefinitelyWritable(int column)222     public boolean isDefinitelyWritable(int column) throws SQLException;
223 
224     /**
225      * Returns whether the indexed column is nullable.
226      *
227      * @param column
228      *            the column index, starting at 1.
229      * @return {@code true} if it is nullable, {@code false} otherwise.
230      * @throws SQLException
231      *             if there is a database error.
232      */
isNullable(int column)233     public int isNullable(int column) throws SQLException;
234 
235     /**
236      * Returns an indication of whether writing to the indexed column is
237      * guaranteed to be unsuccessful.
238      *
239      * @param column
240      *            the column index, starting at 1.
241      * @return {@code true} if the column is read-only, {@code false} otherwise.
242      * @throws SQLException
243      *             if there is a database error.
244      */
isReadOnly(int column)245     public boolean isReadOnly(int column) throws SQLException;
246 
247     /**
248      * Returns an indication of whether the indexed column is searchable.
249      *
250      * @param column
251      *            the column index, starting at 1.
252      * @return {@code true} if the indexed column is searchable, {@code false}
253      *         otherwise.
254      * @throws SQLException
255      *             if there is a database error.
256      */
isSearchable(int column)257     public boolean isSearchable(int column) throws SQLException;
258 
259     /**
260      * Returns an indication of whether the values contained in the indexed
261      * column are signed.
262      *
263      * @param column
264      *            the column index, starting at 1.
265      * @return {@code true} if they are signed, {@code false} otherwise.
266      * @throws SQLException
267      *             if there is a database error.
268      */
isSigned(int column)269     public boolean isSigned(int column) throws SQLException;
270 
271     /**
272      * Returns an indication of whether writing to the indexed column is
273      * possible.
274      *
275      * @param column
276      *            the column index, starting at 1.
277      * @return {@code true} if it is possible to write, {@code false} otherwise.
278      * @throws SQLException
279      *             if there is a database error.
280      */
isWritable(int column)281     public boolean isWritable(int column) throws SQLException;
282 }
283