我们的 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);
从结果集中读取 PL/SQL 编号的正确方法是什么?
最佳答案
根据Oracle JDBC mappings table ,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;
但是,您可能需要重新考虑当前的数据库设计。是否有某种原因导致您不将所有这些信息存储在单个日期或时间戳字段中?如果您这样做了,您可以只从结果集中检索单个日期字段,并完全避免此问题。
关于java - 如何将 PL/SQL 编号读入 Java 结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54355109/