ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JDBC를 이용해 테이블 만들기 과제2
    기타/과제 2020. 11. 24. 16:35

    이전과 다르게 아이디 중복체크와 회원정보 수정이 생겼다.

     

    아이디 중복체크는

    관리번호처럼 랜덤하게 줄 수도 없는데 중복으로 들어가서도 안된다.

    기존에 배운 것들을 이용해 어떻게 풀어주면 좋을까?

     

    나는 Main 클래스에 이렇게 소스를 작성해주었다.

    //멤버추가 + 아이디 중복확인
    public void testOfInsert() {
    	MyMemberDAO dao = new MyMemberDAO();
    	MyMember vo =new MyMember();
    	vo.setId("five");
    	vo.setJday(new Timestamp(System.currentTimeMillis()));
    	vo.setPw("1234");
    	vo.setTel("010-3333-3333");
    	vo.setSecession("회원");
    	
    	try {
    		MyMember checkVo = dao.select("five");
    		String id = checkVo.getId();
    		if(id==null) {
    			dao.insert(vo);
    			System.out.println("회원이 추가되었습니다.");
    		}else {
    			System.out.println("이미 있는 아이디입니다.");
    		}
    	} catch (SQLException e) {
    		e.printStackTrace();
    	}
    }

    단순하게 생각해서 검색했을 때 아이디가 나오면 입력하지 말고 아이디가 없으면 입력하면 된다.

    입력 폼을 그대로 쓰고 try/catch를 이용하는 것 까진 동일하다.

     

    단 try안에서 checkVo라는 객체로 생성하려는 아이디를 select.

    select한 값들 중 getId(); 해서 id 값만 String 변수로 만들어준다.

    그리고 if문 하나를 추가해주었다.

     

    만약 찾은 아이디가 null=(값이 없다면)이면 insert(vo)해줘라.

    그렇지 않다면 sysout으로 이미 있는 아이디라고 표시해주어라.

     

    이렇게 만들면 아주 간단하게 중복아이디 체크를 피할 수 있다.

     

    원래 boolean을 이용해 IDao에 새로운 메소드를 만들어 실행하려고 했다.

    이것도 동일하게 select한 값이 true면 '이미 있는 아이디입니다' 

    false면 insert시켜주었데 어차피 select로 찾는다면 굳이 그럴 필요가 없어서 지워버리고 저렇게 작성해주었다.  

     

     

     

     

    회원정보 업데이트는 아래와 같이 작성하면 된다.

    @Override
    public int update(MyMember vo) throws SQLException {
    	String sql ="UPDATE MYMEMBER SET PW=?, TEL=? "
    			+ "WHERE ID = ?";
    	Connection conn = ConnectionFactory.create();
    	PreparedStatement pstmt = conn.prepareStatement(sql);
    	pstmt.setString(1, vo.getPw());
    	pstmt.setString(2, vo.getTel());
    	pstmt.setString(3, vo.getId());
    	int res = pstmt.executeUpdate();
    	conn.close();
    	return res;
    }

    정보 수정은 모든 필드를 해줄 필요 없다

    관리번호, 아이디, 가입날짜, 회원탈퇴여부는 회원이 수정할 필요가 없으므로

    비밀번호와 전화번호만 수정할 수 있게 설정해주었다.

     

    마지막으로 해당 회원을 아이디로 찾을 수 있게 질문을 해주었다.

     

    //회원정보 업데이트
    public void testOfUpdate() {
    	MyMemberDAO dao = new MyMemberDAO();
    	MyMember vo =new MyMember();
    	vo.setPw("0000");
    	vo.setTel("010-9999-9999");
    	vo.setId("ONE");
    	
    	try {
    		int res  = dao.update(vo);
    		if(res>=1) {
    			System.out.println("수정성공");
    		}else {
    			System.out.println("수정실패");
    		}
    	} catch (SQLException e) {
    		e.printStackTrace();
    	}
    }

    이제 Main클래스에서 바꿀 비밀번호, 전화번호, 바뀌는 아이디를 입력.

    제대로 바뀌었는지 확인하기 위해 if문이 들어갔다.

    여기서 없는 id를 입력하면 수정할 대상이 없으므로 '수정실패'라는 문구가 뜬다

    댓글

Designed by Tistory.