Hi Kris,
This is exactly what I'm doing. I understand your solution, but that's
not really an option for me (I have to change a lot of code).
Maybe the driver can cache the ResultSetMetaData for the ResultSet?
BTW. I looked into the driver code to look for a solution for my problem.
I came
across the following lines of code (in
AbstractJdbc2ResultSetMetaData.java):
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql.toString());
while (rs.next()) {
int table = rs.getInt(1);
int column = rs.getInt(2);
String columnName = rs.getString(3);
String tableName = rs.getString(4);
String schemaName = rs.getString(5);
int nullable = rs.getBoolean(6) ?
ResultSetMetaData.columnNoNulls : ResultSetMetaData.columnNullable;
boolean autoIncrement = rs.getBoolean(7);
for (int i=0; i<fields.length; i++) {
if (fields[i].getTableOid() == table &&
fields[i].getPositionInTable() == column) {
fields[i].setColumnName(columnName);
fields[i].setTableName(tableName);
fields[i].setSchemaName(schemaName);
fields[i].setNullable(nullable);
fields[i].setAutoIncrement(autoIncrement);
}
}
}
Shouldn't this ResultSet/Statement be closed?
Thanks,
Teun Hoogendoorn