我试图编写一个从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)
答案 0 :(得分:15)
JDBC列索引从1开始而不是0.尽可能最好使用列名检索数据,以避免严重依赖结果中列的顺序。
答案 1 :(得分:3)
列索引从1开始。因此,将变量指向列变量增加1。