-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ますWHERE

" WHERE vup.USER_ID = vu.USER_ID  " +
于 2012-07-27T07:04:54.163 に答える
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 に答える
1

まず、PreparedStatementvupを使用します。次に、との間にスペース文字がありません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 に答える