회원탈퇴는 로그인 되어있는 상태에서만 접근 가능한 메뉴이다.
로그인 되어있는 아이디의 비밀번호를 체크 후, 비밀번호가 맞을 경우에 탈퇴 가능하다.
1) TotalController
// ------ *** 회원 탈퇴하기 *** --------
private userDTO leaveMember(userDTO user,Scanner sc) {
System.out.print("\n>>> 회원탈퇴하기 <<<\n");
String userid=user.getUserid().toString();
String passwd="";
boolean bool=udao.checkUserid(userid);
do{
System.out.print("▶비밀번호 확인: ");
passwd=sc.nextLine();
if(!passwd.equals(user.getPasswd())) {
System.out.println("\n>> 비밀번호가 틀렸습니다. 다시 입력해주세요.<<");
}
else {
break;
}
}while(true);
if(bool==true) {
do {
Connection conn = ProjectDBConnection.getConn();
System.out.print("\n▷ 정말로 탈퇴하시겠습니까?[Y/N] ");
String yn = sc.nextLine();
try {
int n=udao.leaveMember(userid); // 회원탈퇴하기
if("y".equalsIgnoreCase(yn)) {
if(n!=1) {
System.out.println(">>>> 대여중인 도서가 있므로 탈퇴 불가!! <<<<");
break;
}
conn.commit(); // 커밋
System.out.println(">> 회원 탈퇴 성공!! << \n");
user = null;
break;
}
else if("n".equalsIgnoreCase(yn)) {
conn.rollback(); // 롤백
System.out.println(">> 회원 탈퇴 취소!! << \n");
break;
}
else {
System.out.println(">> Y 또는 N 만 입력하세요!! << ");
}
} catch (SQLException e) {
e.printStackTrace();
}
} while (true);
}// end of if(bool==true)------------------------------------
return user;
}// end of private userDTO leaveMember(userDTO user,Scanner sc)-----
1-1) 비밀번호를 입력받아 접속중인 id의 비밀번호와 일치하는지 확인
1-2) userDAO의 leaveMember 메소드 실행
1-3) leaveMember 메소드 실행 후, 탈퇴 확인. 탈퇴를 동의하면 commit, 동의하지 않으면 rollback
2) userDAO
// 회원id가 존재하는지 체크하는 메소드
@Override
public boolean checkUserid(String userid) {
boolean b = false;
try {
conn = ProjectDBConnection.getConn();
String sql = "select userid "+
"from lib_member "+
"where userid = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userid);
rs = pstmt.executeQuery();
if(rs.next()) {
b=true;
}
}catch(SQLException e) {
System.out.println("SQL 구문이 잘못되었습니다");
}finally {
close();
}
return b;
}
2-1) TotalController에서 넘어온 id를 pstmt 객체를 생성해
작성된 sql 문을 오라클 서버에 보내 실행되도록 한다.
2-2) SQL 문이 DQL문(select)이므로 .executeQuery();이고,
pstmt.executeQuery(); 을 실행하면 select 되어진 결과물을 ResultSet으로 가져온다.
2-3) rs의 값이 존재하면 boolean 값을 true로 설정하고, 이 값을 return한다.
// 회원 탈퇴 메소드
@Override
public int leaveMember(String userid) {
int result = 0;
try {
conn = ProjectDBConnection.getConn();
String sql = " delete from lib_member "
+ " where userid = ? and totalrent=0 ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userid);
result = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
close();
}
return result;
}
2-4) 회원탈퇴는 SQL 문이 DML문(delete)이므로 .executeUpdate();이고,
pstmt.executeUpdate(); 을 실행하면 해당하는 userid가 totalrent 값이 0일 경우에만 database에서 delete 한다.
2-5) SQL문이 성공적으로 실행되면 result의 값은 1이 되며, 1을 리턴하게 된다.
'{"CODING": undefind}; > JAVA' 카테고리의 다른 글
[도서관리 프로그램(java 콘솔구현) 1-5] 도서 삭제 (0) | 2021.09.11 |
---|---|
[도서관리 프로그램(java 콘솔구현) 1-4] 도서등록 (0) | 2021.09.11 |
[도서관리 프로그램(java 콘솔구현) 1-2] 회원 로그인,로그아웃 (0) | 2021.07.12 |
[도서관리 프로그램(콘솔구현) 1-1] 회원가입 구현 (0) | 2021.07.06 |
16. Wrapper 클래스 (0) | 2021.04.09 |