Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 结果集的日期相关方法不起作用_Java_Oracle_Ora 17004 - Fatal编程技术网

Java 结果集的日期相关方法不起作用

Java 结果集的日期相关方法不起作用,java,oracle,ora-17004,Java,Oracle,Ora 17004,我正在使用jdk-1.6, os-Redhat5, 驱动程序-class12.jar,jar和jdk库 数据库甲骨文10i 代码:- public Timestamp getCurrentTimeStamp(Connection connection) throws SQLException { Timestamp timeStamp = null; try { PreparedStatement ps = connection.pre

我正在使用jdk-1.6, os-Redhat5, 驱动程序-class12.jar,jar和jdk库 数据库甲骨文10i

代码:-

  public Timestamp getCurrentTimeStamp(Connection connection) throws SQLException {
        Timestamp timeStamp = null;
        try {
            PreparedStatement ps = connection.prepareStatement(" SELECT CURRENT_TIMESTAMP FROM DUAL");
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {
                timeStamp = rs.getTimestamp("CURRENT_TIMESTAMP");
            }

        } catch(Exception e){}
        return timeStamp;
    }
在某些系统中,它工作正常,但在服务器上,它只抛出以下异常

java.sql.SQLException: Invalid column type
        at oracle.jdbc.dbaccess.DBError.
throwSqlException(DBError.java:189)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:231)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:294)
        at oracle.jdbc.driver.OracleStatement.getTimestampValue(OracleStatement.java:4627)
        at oracle.jdbc.driver.OracleResultSetImpl.getTimestamp(OracleResultSetImpl.java:409)
        at oracle.jdbc.driver.OracleResultSet.getTimestamp(OracleResultSet.java:1649)
        at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:262)
        at myutils.FoursplUtils.getCurrentTimeStamp(FoursplUtils.java:131)
        at NewServlet.processRequest(NewServlet.java:44)
        at NewServlet.doGet(NewServlet.java:74)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
        at java.lang.Thread.run(Thread.java:619)
resultset的唯一与时间相关的函数不起作用…….resultset.getTimestamp,resultset.getDate。 但是resultset.getString工作正常

在java论坛中,我得到了答案,这是因为JRE时区设置与oracle return时区设置不同。。。 这是正确的还是错误的。。。。。 或者我该如何解决这个问题。。。。。。。。。。。。
请帮助我………

如果时间戳表示为时间戳,即1970年1月1日之后的毫秒数,那么您可能会通过getLong获得它。。。在这种情况下,即使是Long.parseLonggetString也可以

如果数据库返回的字符串实际上是格式化的日期字符串,则检查格式并使用SimpleDataFormat对其进行解析

我同意这有点“黑客行为”,所以首先尝试升级您的JDBC驱动程序。

可能重复您不断发布的相同问题的详细程度不同,请停止!相反,当你找到一些额外的信息时,编辑你的原始问题。不要这样做。您的方法已经抛出SQLException,因此甚至不需要使用try/catch块,如果确实需要,您应该正确处理它。您遇到此错误的唯一原因是Sun非常聪明,预见到人们会像您一样滥用异常捕获,并使错误扩展为可丢弃而不是异常。如果你发现了这个错误,你永远也不会知道。