-1

我正在执行这样的语句

       ResultSet res =
            stmt.executeQuery("SELECT FIRST_NAME FROM  USER vu, USER_PROFILE vup"+
                              "WHERE vup.USER_ID = vu.USER_ID  "+
                              "AND vu.USER_ID = ( SELECT USER_ID  "+
                             " FROM USER"+ 
                             " WHERE EMAIL_ID = '"+userName+"'"+ 
                             "AND PW_ENCRYPTED = '"+password+"')");

但它返回这样的错误

java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束

4

3 回答 3

2

vup您需要在and之间添加一个空格WHERE

" WHERE vup.USER_ID = vu.USER_ID  " +
于 2012-07-27T07:04:54.163 回答
1

首先,使用PreparedStatementvup ,其次,您在and之间缺少一个空格字符WHERE

它应该如下所示:

String sql = "SELECT FIRST_NAME FROM  USER vu, USER_PROFILE vup"
        + " WHERE vup.USER_ID = vu.USER_ID AND vu.USER_ID = "
        + "(SELECT USER_ID FROM USER WHERE EMAIL_ID = ? AND PW_ENCRYPTED = ?)";

ps = conn.prepareStatement(sql);
ps.setString(1, userName);
ps.setString(2, password);

rs = ps.executeQuery();
if (rs.next()) { }
于 2012-07-27T07:06:06.970 回答
1

在查询行的开头和结尾添加空格。像下面

ResultSet res =
            stmt.executeQuery(" SELECT FIRST_NAME FROM  USER vu, USER_PROFILE vup "+
                              " WHERE vup.USER_ID = vu.USER_ID "+
                              "AND vu.USER_ID = ( SELECT USER_ID "+
                             " FROM USER "+ 
                             " WHERE EMAIL_ID = '"+userName+"' "+ 
                             " AND PW_ENCRYPTED = '"+password+"')");
于 2012-07-27T07:05:04.570 回答