🐢🐢꼬부기 LV.2 | 실습•에러/🛡️껍질에 숨기(에러해결)

SQLException : No value specified

서화 2026. 1. 15. 12:37

멤버클라이언트를 정상적으로 한바퀴 돌리기를 실습하다 비밀변호 변경에서 만난에러다

🔎원인분석

에러 문구를 해석해보면 입력해야할 파라미터가 2개인데 그중 2번째 값을 입력하지 않아서 발생한 오류다

콘솔에 보이는 비밀번호 변경 화면

else if(command == 2) {//비밀번호 변경
	MemberDTO memberDTO = new MemberDTO();
	System.out.println("비밀번호 변경할 아이디 입력 >> ");
	memberDTO.setMid(sc.next());
        System.out.println("변경할 비밀번호 입력 >> ");
	memberDTO.setMpw(sc.next());
	memberService.updateMember(memberDTO);
	System.out.println("비밀번호 변경 완료");

내가 입력한 값

비밀번호 변경할 아이디 입력 >> user02
변경할 비밀번호 입력 >> 1234

틀린게 없는데? 싶어서 DB를 확인했더니

이름과 아이디,비번에 제대로된 값이 저장되지 않는것을 확인했다

🛠️해결방법

1. DB에 저장되는 순서 수정하기

현재 SQL문과 멤버DAO

INSERT INTO MEMBER VALUES('user02','1234','아무개','test@test.com','USER');
pstmt = conn.prepareStatement(INSERT);
pstmt.setString(1, memberDTO.getMname());
pstmt.setString(2, memberDTO.getMid());
pstmt.setString(3, memberDTO.getMpw());
pstmt.setString(4, memberDTO.getMemail());

현재 멤버 DAO가 입력받는 순서와 컬럼에 지정된 순서가 다르기 때문에

  • MID ← MNAME 값 (ooo)
  • MPW ← MID 값 (user02)
  • MNAME ← MPW 값 (1234)

로 저장이 된것이다

따라서 DAO를 컬럼 순서에 맞게 수정해야한다

pstmt = conn.prepareStatement(INSERT);
	pstmt.setString(1, memberDTO.getMid());
	pstmt.setString(2, memberDTO.getMpw());
	pstmt.setString(3, memberDTO.getMname());
	pstmt.setString(4, memberDTO.getMemail());

DB를 확인해보면

이렇게 각컬럼에 값이 잘 저장된것을 확인할수 있다

2.비밀번호 변경되는지 확인

콘솔을 통해 새로 회원가입을 해주고 비밀번호 변경을 시도했다

콘솔에는 비밀번호 변경 완료가 출력됐고 DB에도 변경된 비밀번호로 잘 저장되있는것을 확인했다