ResultSet에서 데이터를 가져와 ResultSet에서 적절한 열 이름과 행 데이터 값을 가진 동적 크기의 테이블을 만드는 JTable을 작성하려고합니다. 하지만 JDBC를 가져와 열 이름을 동적으로 가져올 수는 없습니다.간단한 getColumnName (0) 호출 throws 잘못된 열 인덱스 : 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을 사용했다. – anon58192932