在目前开发的程序中 有如下的代码。
- Java code
public void verifyEnquiry(String enquiryNo, String userCode, String verifyDate) throws Exception { StringBuffer buffer = new StringBuffer(100); buffer.append(" Update FeoEnquiry Set VerifyFlag = '1',VerifierCode = ?,"); buffer.append(" VerifyDate = ? where EnquiryNo = ? "); logger.debug(buffer.toString()); dbManager.prepareStatement(buffer.toString()); dbManager.setString(1, userCode); dbManager.setString(2, verifyDate); dbManager.setString(3, enquiryNo); dbManager.executePreparedQuery(); logger.info("DBFeoEnquiry.verifyEnquiry() success!"); }
在debug时 传入三个参数
enquiryNo:QO152012990100003
operatorCode:99010002
verifyDate:2012-06-28
这个段程序在我本机(windows)的weblogic上 运行的时候 oracle会抛出异常信息:
- JScript code
java.sql.SQLDataException: ORA-01861: literal does not match format string
但发布在远程的websphere上时 就没问题
抛出的异常应该是 verifyDate 这个参数没有用to_date() 或者 date 导致的。
但不知道为什么本机不行,在服务器上就可以。
求解?
------解决方案--------------------
应该是setDate把,dbManager.setDate(2, verifyDate),然后要把verifyDate转换为java.util.Date()类型。
------解决方案--------------------
dbManager.setString(1, userCode);
dbManager.setString(2, verifyDate);
dbManager.setString(3, enquiryNo);
红色部分是由问题的,应该如楼上所说那样。