PROJECT

Project(3)-3. 수정

삼색이삼랑해 2022. 10. 14. 16:36

  Controller

private void UpdateData() {
    String mid = userData.getM_id();
    MemberDto data = dDao.selectId(mid);
    dView.outMember(data);
    
    if(data != null) {
        dView.updateMember(data);

        String msg = dServ.updateResult(data);

        dView.printMsg(msg);
    }
}

현재 로그인 된 id를 가져와 해당 id가 가진 정보들을 모두 data에 담을 수 있도록 해준다.

만약 id가 없으면 View의 outMember()를 실행, 있으면 updateResult()를 실행한다.

 

  View

- id가 있을 경우

public void updateMember(MemberDto data) {
    subTitle("Update Data");

    //변경을 하는 값만 받아서 저장.
    String pwd, name, phone, birth;

    pwd = ioc.inStr("PWD : ");
    if(!pwd.equals("")) { // 변경할 값을 입력한 상태
        data.setM_pwd(pwd);
    }

    name = ioc.inStr("NAME : ");
    if(!name.equals("")) {
        data.setM_name(name);
    }

    phone = ioc.inStr("PHONE : ");
    if(!phone.equals("")) {
        data.setM_phone(phone);
    }

    birth = ioc.inStr("BIRTH(yyyy-mm-dd) : ");
    if(!birth.equals("")) {
        data.setM_birth(birth);
    }
}

 

- id가 없을 경우

public void outMember(MemberDto data) {
    ioc.twoPrint("------------------");

    if(data == null){
        printMsg("No Data.");
        return;
    }

    ioc.onePrint(data.toString());
    ioc.twoPrint("------------------");
}

  Dao

- 현재 로그인된 id의 정보 가져오기

public MemberDto selectId(String mid) {
    MemberDto data = null;

    String query = "SELECT * FROM membertbl WHERE m_id = ?";
    
    try {
        conn = DriverManager.getConnection(url,user,pass);
        
        pstmt = conn.prepareStatement(query);
        pstmt.setString(1, mid);
        rs = pstmt.executeQuery();

       if(rs.next()){
           data = new MemberDto();
           data.setM_id(rs.getString(1));
           data.setM_pwd(rs.getString(2));
           data.setM_name(rs.getString(3));
           data.setM_phone(rs.getString(4));
           data.setM_birth(rs.getString(5));
        }
    } catch (SQLException e) {
        //e.printStackTrace();
        data = null;
    } finally {
        close();
    }
    return data;
}

 

- id를 제외한 수정된 정보 DB 저장

public int updateMember(MemberDto data) {
    int result = 0;

    String query = "UPDATE membertbl SET m_pwd = ?, m_name = ?, m_phone = ?, m_birth = ? "
            + "WHERE m_id = ?";
        
    try {
        conn = DriverManager.getConnection(url, user, pass);
        pstmt = conn.prepareStatement(query);
        pstmt.setString(1, data.getM_pwd());
        pstmt.setString(2, data.getM_name());
        pstmt.setString(3, data.getM_phone());
        pstmt.setDate(4, Date.valueOf(data.getM_birth()));
        pstmt.setString(5, data.getM_id());

        result = pstmt.executeUpdate();
    } catch (SQLException e) {
    	e.printStackTrace();
        result = 0;
    } finally {
        close();
    }
    
    return result;
}

수정한 값이 DB에 반영되면 res = 0, 반영되지 않으면 1이 된다.

 

  Service

public String updateResult(MemberDto data) {
    String msg;

    int res = dDao.updateMember(data);
    
    if(res > 0){
        msg = "Update Success.";
    }
    else {
        msg = "Update Failed.";
    }

    return msg;
}