2016-08-05 50 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中:參數索引超出範圍(1>參數數量,爲0)。java.sql.SQLException中:參數索引超出範圍(1>參數的數量,這是0).NOT獲得如何解決

爲什麼是這樣的例外發生,以及如何解決它?

+0

哪行產生錯誤? – pie3636

+0

public static final StringBuilder GET_USER_DETAILS = new StringBuilder()。 \t追加( 「選擇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()

相關問題