java - 嵌套异常是 java.sql.SQLException : Invalid column name ORACLE

标签 java oracle jdbc

我尝试在 Java 中使用 JdbcTemplate 执行以下 oracle 查询:

select RESOURCE_ID 
from REPRO_PRINTING_JOB 
where (USER_ID=? and PRINTING_CENTER_ID=?) 
group by RESOURCE_ID 
union all 
select RESOURCE_ID 
from REPRO_PRINTING_JOB_OLD 
where (USER_ID=? and PRINTING_CENTER_ID=? and STATE='CM') 
group by RESOURCE_ID

查询在 oracle 查询浏览器中运行良好,但在 java 中执行期间无法运行。这个问题的根源是什么?我听说 Jdbc 不能处理区分大小写的事情。这是真的吗?

添加了 JAVA 代码(更正): 我使用 getStatement() 调用查询,它从外部源(属性文件)检索查询,如下所示:

   public List<PrintingJob> getPrintingJobsByCreatedUserId(String createdUserId, String userId) {
    if(log.isDebugEnabled()) {
        log.debug("getReportItemsByUserId(" + createdUserId + "," + userId + ")");
    }
    try {               
        System.out.println("getPrintingJobsByResourceId : createdUserId :"+createdUserId+",userId : "+userId);
        return getJdbcTemplate().query(getStatement("gen.report.userid"),                       
                new Object[]{createdUserId, userId, createdUserId, userId},                     
                new PrintingJobMapper());           
        } catch (DataAccessException ex) {              
            log.error("Error executing query: " + ex.getClass() + ":" + ex.getMessage());               
            return null;            
        }       
}

最佳答案

您收到此错误的原因是因为它是来自 JDBC 驱动程序或 java.sql API 的错误,而不是来自数据库的错误。请注意异常消息中缺少 ORA-XXXXX。如果它包含该内容,那么它将与语法、无效名称或数据库服务器端可能出错的内容有关。

SQLExceptions 在 java 中对于与 SQL api 相关的任何事情都会抛出,而不仅仅是通过连接发送语句时发生的错误......在这种情况下,很可能查询实际上运行正确但结果集API 给您错误(rs.getLong("blah"),其中列“blah”在您的选择中不存在)导致问题。

关于java - 嵌套异常是 java.sql.SQLException : Invalid column name ORACLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9579696/

相关文章:

java - 随机获取 "IO Error: The Network Adapter could not establish the connection"

java - 将属性文件存储在 map 中

java - 在应用程序引擎中上传图像和使用 getServingUrl() 的正确流程是什么?

java - 复合模式: Client treats collections of objects and individual objects uniformly

java - 按 ID 跨表拆分 hibernate 实体

oracle - 无法使用 oracle 存储过程在 Crystal 报表 2013 中创建报表

java - log4j2异步记录器是否真的将数据插入MySQL?

java - jackson 在 momentJS 中使用的奇怪时间戳值给出了错误的年份

oracle - 将多个参数存储到一个变量 Oracle 11G

java - Tomcat、Java 和 Oracle 9. org.apache.naming.NamingContext 查找