11

我正在尝试编写一个 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)
4

2 回答 2

22

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

于 2012-10-08T19:10:19.753 回答
4

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

于 2013-02-04T11:33:46.057 回答