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をハードコードされた使用しました。 – anon58192932