com.mysql.jdbc
Class ResultSetMetaData

java.lang.Object
  extended bycom.mysql.jdbc.ResultSetMetaData
All Implemented Interfaces:
java.sql.ResultSetMetaData

public class ResultSetMetaData
extends java.lang.Object
implements java.sql.ResultSetMetaData

A ResultSetMetaData object can be used to find out about the types and properties of the columns in a ResultSet

See Also:
ResultSetMetaData

Field Summary
(package private)  Field[] fields
           
 
Fields inherited from interface java.sql.ResultSetMetaData
columnNoNulls, columnNullable, columnNullableUnknown
 
Constructor Summary
ResultSetMetaData(Field[] fields)
          Initialise for a result with a tuple set and a field descriptor set
 
Method Summary
 java.lang.String getCatalogName(int column)
          What's a column's table's catalog name?
 java.lang.String getColumnCharacterEncoding(int column)
          What's the Java character encoding name for the given column?
 java.lang.String getColumnCharacterSet(int column)
          What's the MySQL character set name for the given column?
 java.lang.String getColumnClassName(int column)
          JDBC 2.0
 int getColumnCount()
          Whats the number of columns in the ResultSet?
 int getColumnDisplaySize(int column)
          What is the column's normal maximum width in characters?
 java.lang.String getColumnLabel(int column)
          What is the suggested column title for use in printouts and displays?
 java.lang.String getColumnName(int column)
          What's a column's name?
 int getColumnType(int column)
          What is a column's SQL Type? (java.sql.Type int)
 java.lang.String getColumnTypeName(int column)
          Whats is the column's data source specific type name?
protected  Field getField(int columnIndex)
          Returns the field instance for the given column index
 int getPrecision(int column)
          What is a column's number of decimal digits.
 int getScale(int column)
          What is a column's number of digits to the right of the decimal point?
 java.lang.String getSchemaName(int column)
          What is a column's table's schema? This relies on us knowing the table name.
 java.lang.String getTableName(int column)
          Whats a column's table's name?
 boolean isAutoIncrement(int column)
          Is the column automatically numbered (and thus read-only) MySQL Auto-increment columns are not read only, so to conform to the spec, this method returns false.
 boolean isCaseSensitive(int column)
          Does a column's case matter? ASSUMPTION: Any field that is not obviously case insensitive is assumed to be case sensitive
 boolean isCurrency(int column)
          Is the column a cash value?
 boolean isDefinitelyWritable(int column)
          Will a write on this column definately succeed?
 int isNullable(int column)
          Can you put a NULL in this column?
 boolean isReadOnly(int column)
          Is the column definitely not writable?
 boolean isSearchable(int column)
          Can the column be used in a WHERE clause? Basically for this, I split the functions into two types: recognised types (which are always useable), and OTHER types (which may or may not be useable).
 boolean isSigned(int column)
          Is the column a signed number?
 boolean isWritable(int column)
          Is it possible for a write on the column to succeed?
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

fields

Field[] fields
Constructor Detail

ResultSetMetaData

public ResultSetMetaData(Field[] fields)
Initialise for a result with a tuple set and a field descriptor set

Parameters:
fields - the array of field descriptors
Method Detail

isAutoIncrement

public boolean isAutoIncrement(int column)
                        throws java.sql.SQLException
Is the column automatically numbered (and thus read-only) MySQL Auto-increment columns are not read only, so to conform to the spec, this method returns false.

Specified by:
isAutoIncrement in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2...
Returns:
true if so
Throws:
java.sql.SQLException - if a database access error occurs

isCaseSensitive

public boolean isCaseSensitive(int column)
                        throws java.sql.SQLException
Does a column's case matter? ASSUMPTION: Any field that is not obviously case insensitive is assumed to be case sensitive

Specified by:
isCaseSensitive in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2...
Returns:
true if so
Throws:
java.sql.SQLException - if a database access error occurs

getCatalogName

public java.lang.String getCatalogName(int column)
                                throws java.sql.SQLException
What's a column's table's catalog name?

Specified by:
getCatalogName in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2...
Returns:
catalog name, or "" if not applicable
Throws:
java.sql.SQLException - if a database access error occurs

getColumnClassName

public java.lang.String getColumnClassName(int column)
                                    throws java.sql.SQLException
JDBC 2.0

Return the fully qualified name of the Java class whose instances are manufactured if ResultSet.getObject() is called to retrieve a value from the column. ResultSet.getObject() may return a subClass of the class returned by this method.

Specified by:
getColumnClassName in interface java.sql.ResultSetMetaData
Parameters:
column - the column number to retrieve information for
Returns:
the fully qualified name of the Java class whose instances are manufactured if ResultSet.getObject() is called to retrieve a value from the column.
Throws:
java.sql.SQLException - if an error occurs

getColumnCharacterSet

public java.lang.String getColumnCharacterSet(int column)
                                       throws java.sql.SQLException
What's the MySQL character set name for the given column?

Parameters:
column - the first column is 1, the second is 2, etc.
Returns:
the MySQL character set name for the given column
Throws:
java.sql.SQLException - if an invalid column index is given.

getColumnCharacterEncoding

public java.lang.String getColumnCharacterEncoding(int column)
                                            throws java.sql.SQLException
What's the Java character encoding name for the given column?

Parameters:
column - the first column is 1, the second is 2, etc.
Returns:
the Java character encoding name for the given column, or null if no Java character encoding maps to the MySQL character set for the given column.
Throws:
java.sql.SQLException - if an invalid column index is given.

getColumnCount

public int getColumnCount()
                   throws java.sql.SQLException
Whats the number of columns in the ResultSet?

Specified by:
getColumnCount in interface java.sql.ResultSetMetaData
Returns:
the number
Throws:
java.sql.SQLException - if a database access error occurs

getColumnDisplaySize

public int getColumnDisplaySize(int column)
                         throws java.sql.SQLException
What is the column's normal maximum width in characters?

Specified by:
getColumnDisplaySize in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2, etc.
Returns:
the maximum width
Throws:
java.sql.SQLException - if a database access error occurs

getColumnLabel

public java.lang.String getColumnLabel(int column)
                                throws java.sql.SQLException
What is the suggested column title for use in printouts and displays?

Specified by:
getColumnLabel in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2, etc.
Returns:
the column label
Throws:
java.sql.SQLException - if a database access error occurs

getColumnName

public java.lang.String getColumnName(int column)
                               throws java.sql.SQLException
What's a column's name?

Specified by:
getColumnName in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2, etc.
Returns:
the column name
Throws:
java.sql.SQLException - if a databvase access error occurs

getColumnType

public int getColumnType(int column)
                  throws java.sql.SQLException
What is a column's SQL Type? (java.sql.Type int)

Specified by:
getColumnType in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2, etc.
Returns:
the java.sql.Type value
Throws:
java.sql.SQLException - if a database access error occurs
See Also:
Types

getColumnTypeName

public java.lang.String getColumnTypeName(int column)
                                   throws java.sql.SQLException
Whats is the column's data source specific type name?

Specified by:
getColumnTypeName in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2, etc.
Returns:
the type name
Throws:
java.sql.SQLException - if a database access error occurs

isCurrency

public boolean isCurrency(int column)
                   throws java.sql.SQLException
Is the column a cash value?

Specified by:
isCurrency in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2...
Returns:
true if its a cash column
Throws:
java.sql.SQLException - if a database access error occurs

isDefinitelyWritable

public boolean isDefinitelyWritable(int column)
                             throws java.sql.SQLException
Will a write on this column definately succeed?

Specified by:
isDefinitelyWritable in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2, etc..
Returns:
true if so
Throws:
java.sql.SQLException - if a database access error occurs

isNullable

public int isNullable(int column)
               throws java.sql.SQLException
Can you put a NULL in this column?

Specified by:
isNullable in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2...
Returns:
one of the columnNullable values
Throws:
java.sql.SQLException - if a database access error occurs

getPrecision

public int getPrecision(int column)
                 throws java.sql.SQLException
What is a column's number of decimal digits.

Specified by:
getPrecision in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2...
Returns:
the precision
Throws:
java.sql.SQLException - if a database access error occurs

isReadOnly

public boolean isReadOnly(int column)
                   throws java.sql.SQLException
Is the column definitely not writable?

Specified by:
isReadOnly in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2, etc.
Returns:
true if so
Throws:
java.sql.SQLException - if a database access error occurs

getScale

public int getScale(int column)
             throws java.sql.SQLException
What is a column's number of digits to the right of the decimal point?

Specified by:
getScale in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2...
Returns:
the scale
Throws:
java.sql.SQLException - if a database access error occurs

getSchemaName

public java.lang.String getSchemaName(int column)
                               throws java.sql.SQLException
What is a column's table's schema? This relies on us knowing the table name. The JDBC specification allows us to return "" if this is not applicable.

Specified by:
getSchemaName in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2...
Returns:
the Schema
Throws:
java.sql.SQLException - if a database access error occurs

isSearchable

public boolean isSearchable(int column)
                     throws java.sql.SQLException
Can the column be used in a WHERE clause? Basically for this, I split the functions into two types: recognised types (which are always useable), and OTHER types (which may or may not be useable). The OTHER types, for now, I will assume they are useable. We should really query the catalog to see if they are useable.

Specified by:
isSearchable in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2...
Returns:
true if they can be used in a WHERE clause
Throws:
java.sql.SQLException - if a database access error occurs

isSigned

public boolean isSigned(int column)
                 throws java.sql.SQLException
Is the column a signed number?

Specified by:
isSigned in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2...
Returns:
true if so
Throws:
java.sql.SQLException - if a database access error occurs

getTableName

public java.lang.String getTableName(int column)
                              throws java.sql.SQLException
Whats a column's table's name?

Specified by:
getTableName in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2...
Returns:
column name, or "" if not applicable
Throws:
java.sql.SQLException - if a database access error occurs

isWritable

public boolean isWritable(int column)
                   throws java.sql.SQLException
Is it possible for a write on the column to succeed?

Specified by:
isWritable in interface java.sql.ResultSetMetaData
Parameters:
column - the first column is 1, the second is 2, etc.
Returns:
true if so
Throws:
java.sql.SQLException - if a database access error occurs

getField

protected Field getField(int columnIndex)
                  throws java.sql.SQLException
Returns the field instance for the given column index

Parameters:
columnIndex - the column number to retrieve a field instance for
Returns:
the field instance for the given column index
Throws:
java.sql.SQLException - if an error occurs