java.sql.SQLException: No value specified for parameter 1 에러

stan·2023년 6월 13일
0

에러 오류 예외

목록 보기
4/12

회원 가입 후 로그인 에러
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;
	}
profile
이진 입니다

0개의 댓글