You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL查询在Java中报无效列名错误但SQL Developer可正常执行

解决Oracle查询在Java中抛出"Invalid column name"异常的问题

问题根源

你的SQL查询里,把CREATEDDATE转换后的别名定义成了CREATDATE(少了一个字母E):

TO_CHAR (CREATEDDATE,'MM/DD/YYYY HH:MI:SS AM') AS CREATDATE

但Java代码里却用rs.getString("CREATEDDATE")去取这个列,两者拼写不匹配,这就是JDBC抛出"Invalid column name"的直接原因。

你提供的Java代码用了DECODE函数,但STATUS别名和代码调用一致,这部分没问题,问题就出在日期列的别名和代码里的列名不对应上。

解决办法

两种修正方式选一个就行:

方式1:改SQL别名,和Java代码对齐

把SQL里的日期列别名改成CREATEDDATE,和代码里调用的列名匹配,同时排序字段也要对应修改:

SELECT 
    LOGIN_ID AS GROUPID, FILENAME,
    TO_CHAR (CREATEDDATE,'MM/DD/YYYY HH:MI:SS AM') AS CREATEDDATE,
    CASE STATUS 
        WHEN 2300 THEN 'File downloaded and deleted'
        WHEN 2200 THEN 'File Downloaded but not deleted'
        WHEN 2100 THEN 'File Created' END STATUS,UMI,PAYLOAD 
FROM 
    CC_CCS_SRD_ADM.TB_MAILBOX_OUTBOUND 
WHERE 
    LOGIN_ID = 'HCLLIN02' 
ORDER BY 
    CREATEDDATE DESC

方式2:改Java代码,和SQL别名对齐

把Java里获取日期的代码改成rs.getString("CREATDATE"):

mapToAdd.put("CreateDate", rs.getString("CREATDATE"));

额外提醒

  • 写SQL和Java代码时,尽量保持列名/别名的拼写完全一致,避免这类低级错误。
  • 如果你用嵌套查询的写法,也要注意别名的拼写匹配,不然还是会出同样的错。

内容的提问来源于stack exchange,提问作者JeyanthiRanjit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 16:47:04