Here is the output of your example class "z":
Next column is called TABLEID
Next column is called TABLENAME
Next column is called TABLETYPE
Next column is called SCHEMAID
Next column is called LOCKGRANULARITY
Interesting, but my code started to work:
@Test
public final void testGetColumns() throws SQLException {
java.sql.ResultSet column_set = metadata.getColumns(null, "SYS",
"SYSTABLES", "%");
//column_set.relative(2);
//For scrollable result set:
//column_set.absolute(1);
//assertTrue(column_set.first());
//column_set.beforeFirst();
//assertTrue(column_set.next());
//assertTrue(column_set.isFirst());
//For updatable result set:
//column_set.moveToCurrentRow();
//assertTrue(column_set.next());
//int i=0;
//while ( column_set.next() )
//{
assertTrue(column_set.next());
String column_name = column_set.getString(3);
assertNotNull(column_name);
assertTrue(column_name.length()>0);
System.out.println(column_name);
//}
//assertNotNull(column_name);
//assertTrue(column_name.length()>0);
}
JUnit test reporter indicates this test passed("green" state).
System.out.prinln() pushed following into output stream:
SYSTABLES
The same is for while() loop.
Thanks help. The courious thing is that I remember exactly that in one of my
previous tryouts there where only next(), but an exception about undefined
cursor state fired. Hm,..
By the way - metadata connection was properly defined in setUp().
P.S. In normal unit tests it is a bad idea to write into System.out
stream. Normally it should be written into logger (Log4j). Otherwise, in
some cases, benchmarks would not be usable; if data writing operation would
take much more time than assertions. John