Glassfish 3连接池抛出java.sql.SQLSyntaxErrorException:ORA-00933

Glassfish 3连接池抛出java.sql.SQLSyntaxErrorException:ORA-00933,java,oracle,glassfish,glassfish-3,ojdbc,Java,Oracle,Glassfish,Glassfish 3,Ojdbc,Iam使用Glassfish 3服务器运行web服务。 连接池在服务器中实现,能够ping数据库 从服务器接收到连接,但它在运行PreparedStatement时引发java.sql.SQLSyntaxErrorException:ORA-00933:sql命令未正确结束异常 Glassfish 4不会抛出任何异常 查询取自属性文件 QUERY=select * from TABLE where SYSTEMID=?1 使用两个独立的java类接收连接和进一步处理 JDBCUtil.java

Iam使用Glassfish 3服务器运行web服务。 连接池在服务器中实现,能够ping数据库

从服务器接收到连接,但它在运行PreparedStatement时引发
java.sql.SQLSyntaxErrorException:ORA-00933:sql命令未正确结束
异常

Glassfish 4不会抛出任何异常

查询取自属性文件

QUERY=select * from TABLE where SYSTEMID=?1
使用两个独立的java类接收连接和进一步处理

JDBCUtil.java

java

生成的日志:

18:13:35,328 INFO - *****.JDBCUtil.connectionFromConnectionPool(JDBCUtil.java:38) - Received Connection
18:13:35,397ERROR - *****(DAO.java:81) - **************************** :: 
java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:863)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1153)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1275)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3620)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
at com.sun.gjc.spi.jdbc40.PreparedStatementWrapper40.executeQuery(PreparedStatementWrapper40.java:642)
at *************************************(DAO.java:56)
....................

ojdbc6.jar放在glassfish3\glassfish\libglassfish4\glassfish\lib检查服务器文件夹内,尤其是您正在使用的域文件夹内是否有任何其他ojdbcjar

如果服务器文件夹中存在不同的jar或jar的不同版本,则可能会导致此类错误

例如:glassfish3\glassfish\domains\domain1\lib…

如果存在不同版本的jar文件,请将它们全部替换为相同版本


我用玻璃鱼。我只将ojdbc jar保存在glassfish4\glassfish\lib中,这对我来说很好。

检查服务器文件夹中,尤其是您正在使用的域文件夹中是否有其他ojdbcjar

如果服务器文件夹中存在不同的jar或jar的不同版本,则可能会导致此类错误

例如:glassfish3\glassfish\domains\domain1\lib…

如果存在不同版本的jar文件,请将它们全部替换为相同版本


我用玻璃鱼。我只将ojdbc jar保存在glassfish4\glassfish\lib中,这对我来说很好。

用新服务器更换服务器后问题得到解决。用新服务器更换服务器后问题得到解决。
ResultSet resultSet = null;
    PreparedStatement preparedStatement = null;
    Connection connection = null;
    try {
        connection = JDBCUtil.connectionFromConnectionPool();

        if (connection != null) {
            preparedStatement = connection
                    .prepareStatement(PropertyFileReader
                            .getPropertyValue("QUERY"));
            if (preparedStatement != null) {
                preparedStatement.setString(1, "systemID");
                resultSet = preparedStatement.executeQuery();     // line No:56
18:13:35,328 INFO - *****.JDBCUtil.connectionFromConnectionPool(JDBCUtil.java:38) - Received Connection
18:13:35,397ERROR - *****(DAO.java:81) - **************************** :: 
java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:863)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1153)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1275)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3620)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
at com.sun.gjc.spi.jdbc40.PreparedStatementWrapper40.executeQuery(PreparedStatementWrapper40.java:642)
at *************************************(DAO.java:56)
....................