【发布时间】:2013-02-06 01:12:18
【问题描述】:
我正在尝试使用 Spring 'CallableStatementCreator' 在 Java EE Web 应用程序 (java) 中调用 Oracle 存储过程。存储过程的输入之一是 DATE。
我的 attributeValue 是一个 java.util.date,它正确地保存了 DD-MM-YYYY 和 HH:MM:SS。 使用以下代码时:
callableStmt.setTime(6, new java.sql.Time(attributeValue.getTime()));
结果是数据库中的列(存储过程最终写入数据库)设置为 1970-01-01,并且我作为输入传递了正确的 HH:MM:SS。这适用于我的应用程序的早期版本(我使用 JDBC lib 10.x.x.x)
如果我使用
callableStmt.setDate(6, new java.sql.Date(attributeValue.getTime()));
DD-MM-YYYY 设置正确,但小时设置为 00:00:00。
那么,调用属性并将属性传递给这个存储过程的正确方法是什么?另外,有什么调试技巧吗?
Oracle 数据库 11g 企业版 11.2.0.2.0 - 64 位生产 Oracle JDBC 库:ojdbc6-11.2.0.3
【问题讨论】:
-
从 Oracle 10 迁移到 Oracle 11 时,Oracle 在 ojdbc6.jar 中对此进行了更改。在此之前 setTime 设置日期和时间,我猜这是一个错误。
标签: java oracle jakarta-ee stored-procedures jdbc