Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Simple getColumnName(0) call throws Invalid column index: getValidColumnIndex

I'm trying to write a JTable that takes the data from a ResultSet and uses that to create a dynamic sized table with appropriate column names and row data values from the ResultSet but I can't get JDBC to get the column names for me dynamically.

I know my select statement is good! I can print the results out easily with my ResultPrinter class that I wrote but I can't seem to get the column names for some reason.

The code: http://pastebin.com/SSNdCkNu

The output:

Connected to DB!  
SNUM, SNAME, STATUS, CITY, SUPPLIERS_ID_SEQ // printed by static Suppliers class
Columns: 5 // result set shows there are 5 valid columns as expected
Exception in thread "main" java.sql.SQLException: Invalid column index: getValidColumnIndex
at oracle.jdbc.driver.OracleResultSetMetaData.getValidColumnIndex(OracleResultSetMetaData.java:138)
at oracle.jdbc.driver.OracleResultSetMetaData.getColumnName(OracleResultSetMetaData.java:306)
at Main.main(Main.java:15)
like image 379
fIwJlxSzApHEZIl Avatar asked Oct 08 '12 19:10

fIwJlxSzApHEZIl


2 Answers

JDBC column indexes start from 1 and not 0. As far as possible, it is better to retrieve data using column names to avoid hard dependency on the order of columns in the results.

like image 81
Vikdor Avatar answered Sep 28 '22 05:09

Vikdor


Column index starts by 1. So increase your variable pointing column variable by 1.

like image 39
SHUNMUGA RAJ PRABAKARAN Avatar answered Sep 28 '22 07:09

SHUNMUGA RAJ PRABAKARAN