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

时间:2012-10-08 19:08:06

标签: java sql oracle jdbc

我试图编写一个从ResultSet获取数据的JTable,并使用它来创建一个动态大小的表,其中包含来自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)

2 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:3)

列索引从1开始。因此,将变量指向列变量增加1。