相同的查询在 Oracle SQL Developer 中给出正确的结果,而在 Java 中,它会抛出错误。
SELECT
LOGIN_ID AS GROUPID, FILENAME,
TO_CHAR (CREATEDDATE,'MM/DD/YYYY HH:MI:SS AM') AS CREATDATE,
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
CREATDATE DESC
java.sql.SQLException:无效的列名
在 oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3757)
在 oracle.jdbc.driver.InsensitiveScrollableResultSet.findColumn(InsensitiveScrollableResultSet.java:264)
在 SQL Developer 中可以正常获取结果,如下所示:
我尝试在查询中运行此查询,如中所述 SQL 查询错误:无效的列名,结果为 - Login_ID 标识符无效。
我修改后的查询是
SELECT *
FROM
(SELECT
LOGIN_ID AS GROUPID, FILENAME,
TO_CHAR (CREATEDDATE, 'MM/DD/YYYY HH:MI:SS AM') AS CREATDATE,
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) DT
WHERE
LOGIN_ID = 'HCLLIN02'
ORDER BY
CREATDATE DESC;
好的,在此编辑中,添加我的 java 行:
query = " SELECT LOGIN_ID as GROUPID, \n" +
" FILENAME,TO_CHAR (CREATEDDATE,'MM/DD/YYYY HH:MI:SS AM') AS CREATDATE,\n" +
"\t\t\t\t\tDECODE (STATUS,2300,'File downloaded and deleted',2200,'File Downloaded but not deleted', 2100,'File Created' ) STATUS,UMI,PAYLOAD \n" +
"\t\t\t\t\tFROM CC_CCS_SRD_ADM.TB_MAILBOX_OUTBOUND\n" +
"\t\t\t\t\tWHERE LOGIN_ID = 'HCLLIN02' ORDER BY createddate DESC";
stringBuilder.append(query);
logger.info("after Append Query ");
}
try
{
logger.info("inside try block..");
stmt = con.prepareStatement(stringBuilder.toString());
System.out.println(stringBuilder.toString());
rs = stmt.executeQuery();
while(rs.next())
{
//logger.info("inside select success block.."+ rs.getString(groupId));
TreeMap<String, String> mapToAdd = new TreeMap<String, String>();
mapToAdd.put("GroupID",rs.getString("GROUPID"));
mapToAdd.put("FileName",rs.getString("FILENAME"));
mapToAdd.put("umi", rs.getString("UMI"));
mapToAdd.put("status", rs.getString("STATUS"));
//mapToAdd.put("PAYLOAD", rs.getString("PAYLOAD"));
mapToAdd.put("CreateDate", rs.getString("CREATEDATE"));
您重命名了列名称。
SELECT *
FROM
(SELECT
LOGIN_ID AS GROUPID, FILENAME,
TO_CHAR (CREATEDDATE, 'MM/DD/YYYY HH:MI:SS AM') AS CREATDATE,
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) DT
WHERE
GROUPID = 'HCLLIN02'
ORDER BY
CREATDATE DESC;