2016-08-05 9 views
0
public UserLoginDTO populateUserDetails(Connection conn, UserLoginDTO user) throws Exception { 

    Log.info("Enter populateUserDetails()"); 
    PreparedStatement pstmt = null; 
    ResultSet rs = null; 
    UserLoginDTO userDetail=null; 

    try 
    { 
     pstmt = conn.prepareStatement(QueryConstant.GET_USER_DETAILS.toString()); 
     pstmt.setInt(1, user.getUserId()); 
     //pstmt.setString(1, user.getUserName()); 
     rs = pstmt.executeQuery(); 

     while (rs.next()) { 
      userDetail= new UserLoginDTO(); 
      userDetail.setUserId(rs.getInt("M_USER_ID")); 
      userDetail.setUserTypeID(rs.getInt("USER_TYPE_ID")); 
      userDetail.setUserName(rs.getString("M_USER_NAME")); 
      userDetail.setLoginID(rs.getString("LOGIN_ID")); 
      userDetail.setPassword(rs.getString("PASSWORD")); 
     } 
    } 
    catch (Exception e) 
    { 
     throw new Exception(e.getMessage()); 
    } 
    finally 
    { 
     ConnectionManager.close(null, null, rs, pstmt); 
    } 

    Log.info("Exit populateUserDetails()"); 
    return userDetail; 
} 

java.sql.SQLExceptionを解決する方法を取得.NOT範囲外のパラメータインデックス(0される1>パラメータの数):範囲外のパラメータインデックス(1>パラメータの数は0です)。ます。java.sql.SQLException:

なぜこのような例外が発生し、解決するのですか?

+0

どのラインがエラーを生成しますか? – pie3636

+0

public static final StringBuilder GET_USER_DETAILS =新しいStringBuilder()です。 \t append( "select UD.M_User_ID、UD.M_User_NAME、UD.PASSWORD、UD.USER_TYPE_ID、UD.M_Login_ID")。 \t append(「M_USER_MasterからUD、M_USER_TYPE_Master CTM」)。 \t append( "WHERE UD.USER_TYPE_ID = CTM.USER_TYPE_ID"); – Nidhi

+0

@ pie3636 next()実行ループ中に実行されていません – Nidhi

答えて

0

GET_USER_DETAILSには、パラメータを置き換える必要があるときはいつでも疑問符が含まれているはずです。例えば

GET_USER_DETAILS

"SELECT <...> FROM <...> WHERE UD.USER_TYPE_ID = ?" 

されている場合、クエリで

pstmt = conn.prepareStatement(QueryConstant.GET_USER_DETAILS.toString()); 
pstmt.setInt(1, user.getUserId()); 

と疑問符を行うことができますがuser.getUserId()の値に置き換えられます。それは何を知っていないという意味、ここで

あなたGET_USER_DETAILS

SELECT UD.M_User_ID,UD.M_User_NAME, UD.PASSWORD, UD.USER_TYPE_ID, UD.M_Login_ID 
FROM M_USER_Master UD, M_USER_TYPE_Master CTM 
WHERE UD.USER_TYPE_ID = CTM.USER_TYPE_ID 

が、それにはクエスチョンマークがありません

に明らかに等しかったので、運転手は、それが設定可能なパラメータが何であるかを知りません user.getUserId()の代わりに

関連する問題