有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

eclipse使用计数sql查询在Java程序中出现“无效列名”错误

如何在Java程序中使用这个sql查询

String SelectSQL = "SELECT (CASE WHEN cnt >= 1
                             THEN 'True'
                             ELSE 'False'
                             END) result_str
                 FROM ( SELECT COUNT(*) cnt FROM event WHERE externaleventid ='1256294' )";

我正在使用预备语句传递externaleventid。当我使用列名时,其他查询可以正常工作,但当我不使用列名时,我在SQL developer中运行此查询时会收到错误“无效列名”,它会成功执行

添加了java代码:

String query = " SELECT (CASE WHEN COUNT(*) >= 1 THEN 'True' ELSE 'False' END) AS result_str FROM event WHERE externaleventid = ?";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setString(1,"1256294");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) { 
    String externaleventid = rs.getString("DISPLAYNAME");
    System.out.println("externaleventid : " + externaleventid);
}

共 (2) 个答案

  1. # 1 楼答案

    您试图从名为DISPLAYNAME的列中获取结果,该列在您的查询中不存在。一个选项是忽略名称并按索引检索:

    rs.getString(1);
    

    另一种方法是按名称检索,但使用查询中别名的名称:

    rs.getString("result_str");
    
  2. # 2 楼答案

    你应该写

             "SELECT (CASE WHEN cnt >= 1
                             THEN 'True'
                             ELSE 'False'
                             END) AS result_str
                 FROM ( SELECT COUNT(*) AS cnt FROM event WHERE externaleventid ='1256294' )";
    

    而不是

            "SELECT (CASE WHEN cnt >= 1
                             THEN 'True'
                             ELSE 'False'
                             END) result_str
                 FROM ( SELECT COUNT(*) cnt FROM event WHERE externaleventid ='1256294' )";