2016-02-04 49 views
0

正确地结束我有一个Oracle SQL语句正常工作:ORA-00933:SQL命令未在PreparedStatement的

select user_id,email from app_users where user_id in (select user_id from app_users_groups where group_id = ?); 

我运行此,我得到我预期的结果,但是我试图运行在Java中通过以下:

try (Connection conn = dataSource.getConnection()) { 
     try (PreparedStatement ps = conn.prepareStatement("select user_id,email from app_users where user_id in (select user_id from app_users_groups where group_id = ?);")) { 
      ps.setInt(1, groupId); 
      try (ResultSet rs = ps.executeQuery()) { 
       while(rs.next()) { 
       } 
      } 
     } 
    } catch (SQLException e) { } 

但是我失败在ps.executeQuery用的SQLException ORA-00933:SQL命令未正确结束。

我不太确定问题出在哪里,虽然我确定这是简单的我很想念。

谢谢

+4

在查询结尾处删除分号 –

+0

您应该发布堆栈跟踪 – 2016-02-04 20:25:30

+0

德米特里是正确的:您需要删除String内的';'。但是,您还应该在子查询中完全限定列名'user_id'以避免名称冲突。 –

回答

0

正如Dmitry.P和a_horse_with_no_name所说。

我只是不得不删除分号 - 也符合建议的列名称。

conn.prepareStatement("select u.user_id,u.email from app_users u where u.user_id in (select g.user_id from app_users_groups_xref g where g.group_id = ?)") 

对我来说简单的brainfart,谢谢。