亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 PL/SQL NUMBER 讀入 Java ResultSet?

如何將 PL/SQL NUMBER 讀入 Java ResultSet?

慕標琳琳 2022-05-21 17:17:11
我們的 PL/SQL 數據庫有三個 NUMBER 變量,它們代表確切的日、月和年。我想將這些值讀入 Java 中的字符串以顯示,但是 rs.getString("[Number_field]") 會出現“無效的列名”異常,并且 rs.getInt("[Number_field]") 也會這樣做(參見下面的代碼片段)。而且,因為“數字”這個詞用于描述編碼歷史中創建的每個字符串轉換,所以我不可能找到用于我的 ResultSet 的正確函數的參考。String sDate1= rs.getString("DATE_MNTH")+"/"+rs.getString("DATE_DT"+"/"+rs.getString("DATE_YEAR"));Date date=new SimpleDateFormat("MM/DD/yyyy").parse(sDate1);  從 ResultSet 中讀取 PL/SQL NUMBER 的正確方法是什么?
查看完整描述

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;

但是,您可能需要重新考慮當前的數據庫設計。為什么您不只是將所有這些信息存儲在單個日期或時間戳字段中,是否有某些原因?如果你這樣做了,你可以從你的結果集中檢索一個日期字段,并完全避免這個問題。


查看完整回答
反對 回復 2022-05-21
?
SMILET

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)這樣的東西,并且術語“變量”與“列”的含義完全不同......


查看完整回答
反對 回復 2022-05-21
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

這實際上是我如何在結果集中返回這些列的錯誤 - 也就是說,我忘記將它們添加到查詢中!

一旦我添加了它們以便它們實際上是結果集的一部分,我發現 rs.getString() 工作得非常好 - 就像 rs.getInt() 和 Tim Biegeleisen 建議的 rs.getBigDecimal() 一樣。

感謝 Ivan 在評論中讓我重新閱讀出現的錯誤消息 - 并讓我思考為什么Column Name 會無效。


查看完整回答
反對 回復 2022-05-21
  • 3 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號