日期:2014-05-19  浏览次数:20657 次

oracle 中date类型数据的处理
在目前开发的程序中 有如下的代码。
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);

红色部分是由问题的,应该如楼上所说那样。