회원 가입 후 로그인 에러
java.sql.SQLException: No value specified for parameter 1
원인 : sql의 ?(파라미터)에 값을 대입해서 rs=pstmt.executeQuery(); 를 실행해야하는데
그 전에 rs=pstmt.executeQuery(); 를 실행했음으로 오류가 발생한 것이다.
// 로그인
public MemberVO selectOne(MemberVO mVO){
MemberVO mdata=null;
conn=JDBCUtil.connect();
try {
pstmt=conn.prepareStatement(sql_selectOne);
rs=pstmt.executeQuery(); <<<※오류※
pstmt.setString(1,mVO.getMid());
pstmt.setString(2,mVO.getMpw());
if(rs.next()) {
mdata=new MemberVO(rs.getString("MID"),rs.getString("MPW"),rs.getInt("TOTAL"));
}
} catch (SQLException e) {
e.printStackTrace();
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
JDBCUtil.disconnect(pstmt, conn);
return mdata;
}
해결 : sql 파라미터에 값을 대입하고 실행시킨 후 rs=pstmt.executeQuery(); 를 실행하게 코드 순서를 변경해준다.
// 로그인
public MemberVO selectOne(MemberVO mVO){
MemberVO mdata=null;
conn=JDBCUtil.connect();
try {
pstmt=conn.prepareStatement(sql_selectOne);
pstmt.setString(1,mVO.getMid());
pstmt.setString(2,mVO.getMpw());
rs=pstmt.executeQuery(); <<※해결※
if(rs.next()) {
mdata=new MemberVO(rs.getString("MID"),rs.getString("MPW"),rs.getInt("TOTAL"));
}
} catch (SQLException e) {
e.printStackTrace();
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
JDBCUtil.disconnect(pstmt, conn);
return mdata;
}