使用Java 1.7绑定参数将DBUtils公用Oracle 11.2.0.4 SQLException ORA-00942

问题描述 投票:0回答:1

我正在使用带有ojdbc6.jar的Oracle Database 11.2.0.4,并且正在JDK 7中使用apache commons dbutils v1.7,因此我在此函数中使用了QueryRunner及其方法

private <T> List<T> executeQueryAndReturnBeanList(String query, Class<T> className, Object... param) throws SQLException {

     Connection connection = getDBConnectionInstance();

     DbUtils.loadDriver("oracle.jdbc.driver.OracleDriver");

     ResultSetHandler<List<T>> beanListHandler = new BeanListHandler<>(className,new BasicRowProcessor(new GenerousBeanProcessor()));

     QueryRunner runner = new QueryRunner();

     List<T> list = runner.query(connection, query, beanListHandler, param);

     return list;
}

并且在没有绑定参数的情况下,所有查询都可以正常工作>>

SELECT * FROM PEOPLE WHERE GROUP = 1 AND LANG = 'en_US'

但是当我执行此查询时

String query = "SELECT * FROM PEOPLE WHERE GROUP = ? AND LANG = ?";

它给了我这个SQL异常

java.sql.SQLException: ORA-00942: table or view does not exist
 Query: SELECT * FROM PEOPLE WHERE GROUP = ? AND LANG = ? Parameters: [1, en_US]
        at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:527)
        at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:391)
        at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:252)
        at mypackage.executeQueryAndReturnBeanList(JDBCFunctions.java:199)

我真的不知道为什么。我试图使用:P1,:P2

:1,:2而不是绑定参数,但没有任何反应。有什么想法吗?

我正在使用带有ojdbc6.jar的Oracle Database 11.2.0.4,并且在JDK 7中使用了apache commons dbutils v1.7,因此在此函数private中使用了QueryRunner及其方法private List& ...

java oracle oracle11g java-7 apache-commons-dbutils
1个回答
0
投票

组是保留字,不能用作列名或表名。您很可能在表中使用带引号的列名,例如"GROUP"

因此,需要查询为SELECT * FROM PEOPLE WHERE "GROUP" = 1 AND LANG = 'en_US'

© www.soinside.com 2019 - 2024. All rights reserved.