我試圖編寫一個JTable,它從一個ResultSet中獲取數據,並使用它來創建一個動態大小的表,其中包含來自ResultSet的適當列名和行數據值但我無法讓JDBC動態獲取我的列名。簡單的getColumnName(0)調用拋出無效的列索引:getValidColumnIndex
我知道我的選擇聲明是好的!我可以使用我編寫的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)
哇,這很荒謬。或者,也許我只是尷尬,因爲錯誤非常簡單。無論哪種方式,我想通過編程獲得列數,然後得到他們的名字是一個好方法?因爲如果用戶執行不使用所有列的select語句,那麼我無法知道所選列的名稱。 – anon58192932
您可以使用ResultSetMetaData來了解給定結果集中存在的列及其數據類型。 – Vikdor
是的,這就是我在做的:) 爲了簡單起見,我使用了硬編碼的0,因爲我試圖找到bug的起源。 – anon58192932