Estoy intentando escribir una JTable que toma los datos de un ResultSet y los usa para crear una tabla de tamaño dinámico con nombres de columna y valores de datos de fila apropiados del ResultSet pero no puedo hacer que JDBC obtenga dinámicamente los nombres de las columnas.Simple getColumnName (0) call throws Índice de columna no válido: getValidColumnIndex
Sé que mi declaración es buena! Puedo imprimir los resultados fácilmente con mi clase ResultPrinter que escribí pero parece que no puedo obtener los nombres de las columnas por algún motivo.
El código: http://pastebin.com/SSNdCkNu
La salida:
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)
Vaya que es bastante ridículo. O tal vez estoy avergonzado porque el error fue muy simple. De cualquier manera, pensé que obtener el número de columnas programáticamente y obtener su nombre era un buen método. Porque si el usuario hace una instrucción de selección que no usa todas las columnas, entonces no hay forma de que yo sepa los nombres de las columnas que fueron seleccionadas o no. – anon58192932
Puede utilizar ResultSetMetaData para conocer las columnas presentes en un conjunto de resultados determinado junto con su tipo de datos. – Vikdor
Sí, eso es lo que estoy haciendo :) Utilicé el 0 codificado para simplificar porque estaba tratando de encontrar el origen del error. – anon58192932