Class ResultSetTableMetaData

java.lang.Object
org.dbunit.dataset.AbstractTableMetaData
org.dbunit.database.ResultSetTableMetaData
All Implemented Interfaces:
ITableMetaData

public class ResultSetTableMetaData extends AbstractTableMetaData
ResultSet based ITableMetaData implementation.

The lookup for the information needed to create the Column objects is retrieved in two phases:

  1. Try to find the information from the given ResultSet via a DatabaseMetaData object. Therefore the ResultSetMetaData is used to get the catalog/schema/table/column names which in turn are used to get column information via DatabaseMetaData.getColumns(String, String, String, String). The reason for this is that the DatabaseMetaData is more precise and contains more information about columns than the ResultSetMetaData does. Another reason is that some JDBC drivers (currently known from MYSQL driver) provide an inconsistent implementation of those two MetaData objects and the DatabaseMetaData is hence considered to be the master by dbunit.
  2. Since some JDBC drivers (one of them being Oracle) cannot (or just do not) provide the catalog/schema/table/column values on a ResultSetMetaData instance the second step will create the dbunit Column using the ResultSetMetaData methods directly (for example ResultSetMetaData.getColumnType(int). (This is also the way dbunit worked until the 2.4 release)

Since:
2.3.0
Version:
$Revision$ $Date$
Author:
gommma (gommma AT users.sourceforge.net), Last changed by: $Author$