简单的getColumnName(0)调用throws无效的列索引:getValidColumnIndex

ano*_*932 7 java sql oracle jdbc

我正在尝试编写一个JTable,它接收来自ResultSet的数据,并使用它来创建一个动态大小的表,其中包含来自ResultSet的相应列名和行数据值,但我无法让JDBC为我动态获取列名.

我知道我的选择声明很好!我可以使用我编写的ResultPrinter类轻松打印结果,但由于某些原因我似乎无法获取列名.

代码:http://pastebin.com/SSNdCkNu

输出:

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)
Run Code Online (Sandbox Code Playgroud)

Vik*_*dor 15

JDBC列索引从1开始而不是0.尽可能最好使用列名检索数据,以避免严重依赖结果中列的顺序.