`
nwsuafer
  • 浏览: 12954 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Oracle试用PreparedStatement出现java.sql.SQLException: 无效的列索引

 
阅读更多

sql语句如下:select bu.deptno,count(bu.hiredate) StartMonthCount from userinfo bu,dept d where bu.deptno=d.deptno and bu.hiredate<to_date(‘?’,'yyyy-mm-dd') group by bu.deptno

java程序中调用:pstmt.setString(1, firstDay);

出现如下异常

java.sql.SQLException: 无效的列索引

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5329)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:5321)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:135)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:135)
at com.neusoft.hr.model.dao.impl.ReportDaoImpl.findStartMonthCount(ReportDaoImpl.java:258)
at com.neusoft.hr.model.service.ReportService.findMonthReportList(ReportService.java:77)
at com.neusoft.hr.controller.ReportAction.monthReport(ReportAction.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
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 com.neusoft.hr.utils.EncodingFilter.doFilter(EncodingFilter.java:29)
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:127)
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:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)

at java.lang.Thread.run(Thread.java:619)



经过仔细排查,原来是日期转换的时候出问题了

将select bu.deptno,count(bu.hiredate) StartMonthCount from userinfo bu,dept d where bu.deptno=d.deptno and bu.hiredate<to_date(‘?’,'yyyy-mm-dd') group by bu.deptno

改为select bu.deptno,count(bu.hiredate) StartMonthCount from userinfo bu,dept d where bu.deptno=d.deptno and bu.hiredate<to_date(?,'yyyy-mm-dd') group by bu.deptno

问题随之解决了。

分享到:
评论

相关推荐

    jdbc.jar

    3. `java.sql.Statement` 和 `java.sql.PreparedStatement`:用于执行SQL语句。 4. `java.sql.ResultSet`:存储从数据库查询返回的结果集。 5. 数据库特定的驱动类,如`com.mysql.jdbc.Driver`(对于MySQL)或`...

    Java连接Oracle示例.rar

    10. **Oracle特定功能**:Oracle数据库还提供了一些特有的功能,如PL/SQL过程、游标、索引、触发器等,这些可以通过JDBC API的扩展方法来使用。 通过以上步骤,你可以编写一个简单的Java程序来连接Oracle数据库,并...

    java sql

    11. **异常处理**: 在Java中处理SQL操作时,需要捕获并处理`SQLException`,确保程序的健壮性。 12. **批量操作**: JDBC提供批量处理功能,允许一次性执行多条SQL语句,提高效率。 博客中的SQL文件(0.sql到10.sql...

    oracle jdbc class12.jar 源码

    `OracleException`是Oracle JDBC特有的异常类,继承自`java.sql.SQLException`。它提供了针对Oracle数据库特定错误的详细信息。 8. **批处理**: JDBC允许批量执行SQL命令以提高性能。在Class12.jar源码中,可以...

    oracle sql java教程

    8. **Oracle特有功能**:Oracle提供了一些特有的SQL函数和特性,如PL/SQL存储过程、游标、索引、分区表等,这些可以通过Java调用。 9. **连接池**:在实际应用中,通常使用连接池(如C3P0、HikariCP或Apache DBCP)...

    oracle的数据类型_java中Clob型详细用法_struts中实现图片上传功能

    在 Java 中,我们可以使用 `oracle.sql.CLOB` 类来操作 Oracle 数据库中的 CLOB 型数据。以下是一个简单的示例,展示如何插入、读取 CLOB 值: ```java import java.io.BufferedReader; import java.io.IOException...

    利用Java向Oracle中插入图片&#40;BLOB&#41;文件.doc

    ### 使用Java向Oracle数据库插入图片(BLOB)文件 #### 一、概述 本文将详细介绍如何使用Java通过JDBC向Oracle数据库中插入图片文件的方法。此过程涉及到的主要技术包括Java编程语言、Oracle数据库以及JDBC驱动。...

    java JDBC连接数据库,并将数据分页

    import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; ``` 连接Oracle数据库的步骤包括加载驱动、建立连接和关闭连接。以下是一个示例: ```java String url = "jdbc:...

    java oracle练习例子

    本示例"java oracle练习例子"旨在提供一个基础的Java程序,演示如何使用JDBC(Java Database Connectivity)API连接到Oracle数据库,执行SQL查询,并处理返回的结果集。下面我们将深入探讨这个主题。 首先,为了...

    Java导入导出Oracle[文].pdf

    在Java编程环境中,我们经常需要与数据库进行交互,Oracle作为一款广泛应用的关系型数据库管理系统,其数据导入导出功能是数据库管理的重要环节。本文件“Java导入导出Oracle[文].pdf”显然提供了一种利用Java程序来...

    关于在ORACLE下开发JAVA的几个问题.rar_oracle

    3. **SQL与PL/SQL**:Java可以执行SQL查询来访问数据,也可以调用Oracle的PL/SQL过程和函数。例如,通过`CallableStatement`执行存储过程。 4. **Oracle存储过程**:在Oracle中,可以通过Java编写PL/SQL程序,并...

    教学中java连接大型数据库Oracle几个关键问题研究.zip

    8. **异常处理**:Java中的`SQLException`是处理数据库操作异常的关键。良好的异常处理可以提高程序的健壮性,及时捕获并处理错误。 9. **连接池**:在实际应用中,使用连接池(如C3P0、HikariCP、DBCP等)管理...

    Oracle连接数据库的程序

    1. 导入JDBC驱动:在Java代码中,你需要导入`java.sql`和`oracle.jdbc`相关的包,例如: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; ``` 2. 设置JDBC URL...

    Java Oracle 数据库开发指南

    3. SQL语句:Java通过JDBC执行SQL语句来操作数据库。包括SELECT、INSERT、UPDATE、DELETE等,以及更复杂的JOIN、子查询和存储过程调用。 4. PreparedStatement和Statement:PreparedStatement允许预编译SQL语句,...

    java连接oracle

    Oracle数据库有许多特性,如PL/SQL、存储过程、索引、触发器、分区表等,开发者需要了解这些特性并适当地在Java中使用。 13. **JDBC API的最新改进**: Java 8引入了`java.sql.Connection`的`unwrap()`和`...

    oracle 10g数据库java开发

    8. **Oracle的高级特性**:例如,Oracle 10g支持物化视图、分区表、索引组织表等特性,这些都可以通过Java程序进行操作和管理,优化查询性能。 9. **异常处理**:在Java中,需正确处理SQLException和其他可能抛出的...

    ORACLE-JDBC

    Oracle JDBC是Oracle数据库与Java应用程序之间通信的桥梁,它允许Java开发者通过编写Java代码来访问和操作Oracle数据库。Oracle提供了一系列的JDBC驱动程序,包括类型1、2、3和4,其中类型4(Oracle JDBC Thin ...

    Oracle ojdbc8.7z

    8. **元数据查询**:通过java.sql.DatabaseMetaData接口,开发人员可以获取关于数据库、表、列、索引等信息,方便进行动态SQL生成和数据库元数据的分析。 9. **异常处理**:OJDBC8提供了一套完整的异常处理机制,...

    jdbc学习手册

    1. **JDBC API**: JDBC API包括一系列的Java类和接口,如`java.sql.DriverManager`、`java.sql.Connection`、`java.sql.Statement`、`java.sql.PreparedStatement`和`java.sql.ResultSet`等。这些API构成了与数据库...

Global site tag (gtag.js) - Google Analytics