java - 如何将 PL/SQL 编号读入 Java 结果集?

标签 java plsql resultset

我们的 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/

相关文章:

java - 从 ResultSet 读取空值

java - 如何在java中存储手机号码?

c# - 在 Java/C# 中调用同一对象的多个方法的编码标准

sql - ORACLE 更新后触发 : solving ORA-04091 mutating table error

database - 为什么我在使用 UPDATE 代码时没有收到 No_data_found 错误?

java - 结果集验证

java - Netbeans 中的结果集到 Jtable

java - 原子整数线程安全的条件检查?

java - 无法访问 ArrayList 的 ArrayList(通用)

sql - 查询过去一年的活跃订阅者数和订阅数(按天)