org.dbunit.database
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:
- 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.
-
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: 900 $ $Date: 2008-11-30 16:41:45 +0100 (Sun, 30 Nov 2008) $
- Author:
- gommma (gommma AT users.sourceforge.net), Last changed by: $Author: gommma $
ResultSetTableMetaData
public ResultSetTableMetaData(String tableName,
ResultSet resultSet,
IDatabaseConnection connection,
boolean caseSensitiveMetaData)
throws DataSetException,
SQLException
- Parameters:
tableName
- The name of the database tableresultSet
- The JDBC result set that is used to retrieve the columnsconnection
- The connection which is needed to retrieve some configuration valuescaseSensitiveMetaData
- Whether or not the metadata is case sensitive
- Throws:
DataSetException
SQLException
ResultSetTableMetaData
public ResultSetTableMetaData(String tableName,
ResultSet resultSet,
IDataTypeFactory dataTypeFactory,
boolean caseSensitiveMetaData)
throws DataSetException,
SQLException
- Parameters:
tableName
- The name of the database tableresultSet
- The JDBC result set that is used to retrieve the columnsdataTypeFactory
- caseSensitiveMetaData
- Whether or not the metadata is case sensitive
- Throws:
DataSetException
SQLException
getColumns
public Column[] getColumns()
throws DataSetException
- Description copied from interface:
ITableMetaData
- Returns this table columns as recognized by dbunit. In cases where columns are resolved
using database metadata it can happen that an empty array is returned when a table does
not have a single column that is recognized by the configured
IDataTypeFactory
.
Note that it is not an exceptional case within dbunit when a ITableMetaData
does not have a column.
- Returns:
- The columns for this table
- Throws:
DataSetException
getPrimaryKeys
public Column[] getPrimaryKeys()
throws DataSetException
- Description copied from interface:
ITableMetaData
- Returns this table primary key columns.
- Returns:
- this table primary key columns.
- Throws:
DataSetException
getTableName
public String getTableName()
- Description copied from interface:
ITableMetaData
- Returns this table name.
- Returns:
- this table name
toString
public String toString()
- Overrides:
toString
in class Object
Copyright © 2002-2012. All Rights Reserved.