You may use the connection and table name (and column name) to retrieve the meta-data information from the database.
E.g.
/**
* Get meta data of columns via table name
* @param conn database connection
* @param tablename
* @return
* @throws SQLException
*/
// private ResultSet getColumnMetaData(Connection conn, String tablename) throws SQLException
// {
// DatabaseMetaData dmeta = conn.getMetaData();
// return dmeta.getColumns(null, null, tablename, "%");
// }
/**
* Get the field type according to field name
*
* @param cMetaSet
* @param fieldname
* @return
* @throws SQLException
*/
// private int getFieldType(CachedRowSet cMetaSet, String fieldname) throws SQLException
// {
// ResultSet rs = cMetaSet.createCopyNoConstraints();
//
// while (rs.next())
// {
// if (fieldname.equalsIgnoreCase(rs.getString(4)))
// {
// return rs.getInt(5);
// }
// }
//
// throw new SQLException("Can not find the field in the target table : " + fieldname);
// }
/**
* Get the field type according to its index
*
* @param cMetaSet
* @param fldIndex
* @return
* @throws SQLException
*/
// private int getFieldType(CachedRowSet cMetaSet, int fldIndex) throws SQLException
// {
// int index = 0;
// ResultSet rs = cMetaSet.createCopyNoConstraints();
//
// while (rs.next())
// {
// if (fldIndex == index)
// {
// return rs.getInt(5);
// }
// index++;
// }
//
// throw new SQLException("Fields in sql statement is more than the target table");
// }