The ResultSetMetaData Interface

After a ResultSet has been returned by the database, it’s possible to get all kinds of information concerning the ResultSet, such as the names and types of the columns that it contains. The ResultSetMetaData interface offers the following methods for finding out about a result set’s metadata. These methods also work on ResultSets returned by some of the DatabaseMetaData class because those ResultSets are still just ResultSets.

ResultSet columns

In dynamic programs, SQL queries are built at runtime. This means that the properties of the results of such queries aren’t known at design time. The ResultSetMetaData interface is a rich interface providing many methods for obtaining information about the columns of a result set, as listed in the following. This information can be leveraged at runtime to build a dynamic result screen, format a GUI table widget, and so on.

ResultSetMetaData Methods for Information about a Result Set’s Columns

int getColumnCount(); int getColumnDisplaySize(int column); String getColumnLabel(int column); String getColumnName(int column); String getSchemaName(int column); int getPrecision(int column); int getScale(int column); String getTableName(int column); String getCatalogName(int column); int getColumnType(int column); String getColumnTypeName(int column);

Column properties

Individual columns of a result set may be analyzed as well. The ResultSetMetaData interface provides a few methods for obtaining information about the properties of the columns of a result set, as listed in the following.

ResultSetMetaData Methods for Property Information about a Result Set’s Columns

boolean isAutoIncrement(int column); boolean isCaseSensitive(int column); boolean isSearchable(int column); boolean isCurrency(int column); int isNullable(int column); boolean isSigned(int column); boolean isReadOnly(int column); boolean isWritable(int column); boolean isDefinitelyWritable(int column);

Note that there is no way to get information on rows of data. Such information is only available on columns. The method in Listing 9-4 gets the number and label of each column and displays all metadata available for the columns in a tabular form.

Listing 9-4: ResultSetMetaData: Getting Column Characteristics

start example
... ... int i; // we have a ResultSet and want to display a table detailing // every column’s metadata ResultSetMetaData rsmd = rs.getMetaData(); int numCols = rsmd.getColumnCount(); // display column headers System.out.print("\t"); for (i = 1; i <= numCols; i++) {          if (i > 1) System.out.print("\t ");          System.out.print(rsmd.getColumnLabel(i)); } System.out.println(""); // now we will print the column characteristics System.out.print("\nAuto Increment\t"); for (i = 1; i <= numCols; i++) {          if (i > 1) System.out.print("\t ");          System.out.print(rsmd.isAutoIncrement(i)); } System.out.print("\nCase Sensitive\t"); for (i = 1; i <= numCols; i++) {          if (i > 1) System.out.print("\t ");          System.out.print(rsmd.isCaseSensitive(i)); } System.out.print("\nSearchable\t"); for (i = 1; i <= numCols; i++) {          if (i > 1) System.out.print("\t ");          System.out.print(rsmd.isSearchable(i)); } System.out.print("\nCurrency\t"); for (i = 1; i <= numCols; i++) {          if (i > 1) System.out.print("\t ");          System.out.print(rsmd.isCurrency(i)); } System.out.print("\nAllows nulls\t"); for (i = 1; i <= numCols; i++) {          if (i > 1) System.out.print("\t ");          System.out.print(rsmd.isNullable(i)); } System.out.print("\nSigned\t"); for (i = 1; i <= numCols; i++) {          if (i > 1) System.out.print("\t ");          System.out.print(rsmd.isSigned(i)); } System.out.print("\nRead only\t"); for (i = 1; i <= numCols; i++) {          if (i > 1) System.out.print("\t ");          System.out.print(rsmd.isReadOnly(i)); } System.out.print("\nWritable\t"); for (i = 1; i <= numCols; i++) {          if (i > 1) System.out.print("\t ");          System.out.print(rsmd.isWritable(i)); } System.out.print("\nDefinitely Writable\t"); for (i = 1; i <= numCols; i++) {          if (i > 1) System.out.print("\t ");          System.out.print(rsmd.isDefinitelyWritable(i)); } System.out.println(); ... ...
end example



JDBC 3. 0. JAVA Database Connectivity
JDBC 3: Java Database Connectivity
ISBN: 0764548751
EAN: 2147483647
Year: 2002
Pages: 148

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net