Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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.sql.SQLException:列名称无效ORACLE_Java_Oracle_Jdbc - Fatal编程技术网

嵌套异常为java.sql.SQLException:列名称无效ORACLE

嵌套异常为java.sql.SQLException:列名称无效ORACLE,java,oracle,jdbc,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=?

我尝试使用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;            
        }       
}
public List getPrintingJobsByCreatedUserId(字符串createdUserId,字符串userId){
if(log.isDebugEnabled()){
调试(“getReportItemsByUserId(“+createdUserId+”,“+userId+”));
}
试试{
System.out.println(“getPrintingJobsByResourceId:createdUserId:+createdUserId+”,userId:+userId);
返回getJdbcTemplate().query(getStatement(“gen.report.userid”),
新对象[]{createdUserId,createdUserId,userId},
新的PrintingJobMapper());
}catch(DataAccessException ex){
log.error(“执行查询时出错:“+ex.getClass()+”:“+ex.getMessage()”);
返回null;
}       
}

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


在java中,与SQL api相关的任何内容都会引发SQLExceptions,而不仅仅是通过连接发送语句时发生的错误。。。在这种情况下,很可能查询实际上运行正确,但结果集API给您带来了错误(rs.getLong(“blah”),其中select中不存在列“blah”)。

您是如何用Java编写的?您确定查询读取正确吗,因为你是从属性文件中读取的?是的,我很确定,因为如果它没有正确读取语句,java将在未找到相关键的情况下引发NoSuchElementException。请打印从属性文件读取的语句和完整异常,并向我们显示结果。是否确定异常发生在select中而不是行映射器中?