3 回答

TA貢獻1895條經驗 獲得超3個贊
根據Oracle JDBC 映射表,Oracle 的NUMBER類型是精確類型,映射到 Java 的BigDecimal. 因此,您可以嘗試使用ResultSet#getBigDecimal:
String day = rs.getBigDecimal("day_field");
String month = rs.getBigDecimal("month_field");
String year = rs.getBigDecimal("year_field");
String output = year + "-" + month + "-" + day;
但是,您可能需要重新考慮當前的數據庫設計。為什么您不只是將所有這些信息存儲在單個日期或時間戳字段中,是否有某些原因?如果你這樣做了,你可以從你的結果集中檢索一個日期字段,并完全避免這個問題。

TA貢獻1796條經驗 獲得超4個贊
您的陳述中有錯字:
rs.getString("DATE_MNTH")+"/"+rs.getString("DATE_DT"+"/"+rs.getString("DATE_YEAR"));
您錯放了 DATE_DT 列的結束“)”。
實際上,您嘗試從 rs 中獲取兩列:
DATE_MNTH and
result of concatenation which looks like: DATE_DT/{whatever rs.getString("DATE_YEAR") has} ...
例如“DATE_DT/2019”
我很確定結果集中沒有“DATE_DT/2019”這樣的列......并且異常告訴你。
順便說一句:沒有像“PL/SQL DB”(它是 Oracle DB)這樣的東西,并且術語“變量”與“列”的含義完全不同......

TA貢獻1900條經驗 獲得超5個贊
這實際上是我如何在結果集中返回這些列的錯誤 - 也就是說,我忘記將它們添加到查詢中!
一旦我添加了它們以便它們實際上是結果集的一部分,我發現 rs.getString() 工作得非常好 - 就像 rs.getInt() 和 Tim Biegeleisen 建議的 rs.getBigDecimal() 一樣。
感謝 Ivan 在評論中讓我重新閱讀出現的錯誤消息 - 并讓我思考為什么Column Name 會無效。
添加回答
舉報