Michael A
Michael A

Reputation: 5840

Getting ResultSet columns and values dynamiclly

I am running an SQL query on a AS400 table.

I dont know in advance the columns names i am extracting in my SQL.

in my ResultSet i need to:

  1. get the result set columns (MetaData of the result records - one time).

  2. for each record on the set get the values of the columns.

How can i do this?

Upvotes: 1

Views: 94

Answers (1)

bw_üezi
bw_üezi

Reputation: 4564

There are DataBaseMetaData retrieved from Connection.getMetaData() and ResultSetMetaData from a ResultSet.

Some example java code snipped that may help you:

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery( "SELECT * FROM MY_TABLE" );
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
/*if you need the column names...*/ 
//for( int i = 1; i <= numberOfColumns ) {
//    rsmd.getColumnName( i );
//}
List<Object[]> result = new ArrayList<Object[]>();
while( rs.next() ) {
    Object[] values = new Object[ numberOfColumns ];
    for( int index = 0; index < numberOfColumns; ) {
        values[ index ] = rs.getObject( ++index );
    }
    result.add( values );
}

Upvotes: 5

Related Questions