휴먼교육센터 개발자과정 45일차

조하영·2022년 10월 6일
0

일반적으로 select 결과를 가져올때는
튜플이 하나일경우 DTO로 받고 여러개일경우 리스트나 해쉬맵으로 받는다.
결과를 받는객체= ResultSet

실습

  1. 프로젝트 생성
  2. 기능 회원관리 기능
  3. 키보드로 선택하여 메뉴를 분기합니다

고객 정의 : 아이디 이름 비번 주소 포인트(숫자)
id name pass addr point < DTO, DB 테이블 필드명으로 통일

기능
1. 고객등록
2. 고객목록보기
3. 고객수정 아이디로 검색하여 정보수정 아이디는 수정불가
4. 고객삭제 아이디로 삭제하기
5. 고객검색 아이디로 검색하여 해당 고객의 정보 모두보기

업데이트

  1. 고객수정 기능
    아이디로 검색 후 등록된 사용자면 수정하고, 등록된 사용자가 아니면 종료하고 메뉴로 이동
  2. 고객검색은 검색어로 아이디나 이름이 검색어에 포함되는 모든 고객의 정보를 출력한다.
  3. 1번 기능 업데이트 고객이 아이디를 입력후 이미 등록된 아이디라면 다시 입력하세요.
    사용가능하다면 다음 정보를 입력하도록 한다.

메인 클래스

package memberMGR;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("회원관리 프로그램 시작 ");
        new MemberManager();
        System.out.println("회원관리 프로그램 종료 ");
    }
}

회원관리 클래스

package memberMGR;

import java.util.ArrayList;
import java.util.Scanner;

import dao_dto.M_DAO;
import dao_dto.M_DTO;

public class MemberManager {
    M_DAO mdao = new M_DAO();
    Scanner in = new Scanner(System.in);

    MemberManager() {

        for (;;) {
            menu();
            System.out.println("메뉴를 선택해주세요 ");
            String selMenu = in.nextLine();
            if (selMenu.equals("1")) {
                addMem();
            } else if (selMenu.equals("2")) {
                showMem();
            } else if (selMenu.equals("3")) {
                modMem();
            } else if (selMenu.equals("4")) {
                searchMem();
            } else if (selMenu.equals("5")) {
                delMem();
            } else if (selMenu.equals("6")) {
                break;
            } else {
                System.out.println("잘못된 입력입니다.");
            }
        }

    }

    private void modMem() {
        M_DTO mdto = new M_DTO();
        System.out.println("수정할 ID를 입력해주세요. ");
        String modId = in.nextLine();
        mdto.setId(modId);
        if (!mdao.chkMem(mdto)) {
            System.out.println("고객명을 입력해주세요. ");
            String modName = in.nextLine();
            System.out.println("비밀번호를 입력하세요. ");
            String modPass = in.nextLine();
            System.out.println("주소를 입력하세요. ");
            String modAddr = in.nextLine();
            mdto.setName(modName);
            mdto.setPass(modPass);
            mdto.setAddr(modAddr);

            mdao.modyMem(mdto);
            System.out.println(modId + "(이/가) 수정되었습니다. ");
        } else {
            System.out.println(modId + "(이/가) 없습니다.");
        }
    }

    private void showMem() {
        ArrayList<Member> mList = mdao.allSelect();
        System.out.println("등록된 고객은 " + mList.size() + "명 입니다.");
        for (Member i : mList) {
            i.prt();
        }
    }

    private void searchMem() {
        M_DTO mdto = new M_DTO();
        System.out.println("검색어를 입력해주세요 ");
        String search = in.nextLine();
        mdto.setId(search);
        if (mdao.chkMem(mdto)) {
            ArrayList<Member> mList = mdao.schMem(search);
            for (Member i : mList) {
                i.prt();
            }
        } else {
            System.out.println(search + "(이/가) 없습니다.");
        }
    }

    private void delMem() {
        M_DTO mdto = new M_DTO();
        System.out.println("삭제할 ID를 입력하세요. ");
        String delId = in.nextLine();
        if (mdao.chkMem(mdto)) {
            mdto.setId(delId);
            mdao.deleteWord(mdto);
            System.out.println(delId + "(이/가) 삭제되었습니다. ");
        } else {
            System.out.println(delId + "(이/가) 없습니다.");
        }
    }

    private void addMem() {
        M_DTO mdto = new M_DTO();
        System.out.println("아이디를 입력하새요 ");
        String newId = in.nextLine();
        mdto.setId(newId);
        if (mdao.chkMem(mdto)) {
            System.out.println("고객명을 입력하세요. ");
            String newName = in.nextLine();
            System.out.println("비밀번호를 입력하세요. ");
            String newPass = in.nextLine();
            System.out.println("주소를 입력하세요. ");
            String newAddr = in.nextLine();
            mdto.setName(newName);
            mdto.setPass(newPass);
            mdto.setAddr(newAddr);

            mdao.insertMem(mdto);

            System.out.println(newId + "(이/가) 추가되었습니다.");
        } else {
            System.out.println("이미 등록된 아이디 입니다.");
        }

    }

    private void menu() {
        System.out.println("--------- ");
        System.out.println("1. 고객등록 ");
        System.out.println("2. 고객목록 ");
        System.out.println("3. 고객수정 ");
        System.out.println("4. 고객검색 ");
        System.out.println("5. 고객삭제 ");
        System.out.println("6. 프로그램종료 ");
    }
}

회원정보 클래스

package memberMGR;

public class Member {
    private String id;
    private String name;
    private String pass;
    private String addr;
    private int point;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    public int getPoint() {
        return point;
    }

    public void setPoint(int point) {
        this.point = point;
    }

    public void prt() {
        System.out.println("-----------");
        System.out.println("ID: " + id);
        System.out.println("PW: " + pass);
        System.out.println("이름: " + name);
        System.out.println("주소: " + addr);
        System.out.println("포인트: " + point);
    }

}

멤버 DAO 클래스

package dao_dto;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import memberMGR.Member;

public class M_DAO {
    private Connection conn = null;

    public M_DAO() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public boolean connect() {
        try {
            conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "system", "11111111");
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

    public void insertMem(M_DTO mdto) {
        if (connect()) {
            String sql = "insert into member2 values(?,?,?,?,default)";
            try {
                PreparedStatement psmt = conn.prepareStatement(sql);
                psmt.setString(1, mdto.getId());
                psmt.setString(2, mdto.getName());
                psmt.setString(3, mdto.getPass());
                psmt.setString(4, mdto.getAddr());
                psmt.executeUpdate();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
    }

    public void deleteWord(M_DTO mdto) {
        if (connect()) {
            String sql = "delete from member2 where id=?";
            try {
                PreparedStatement psmt = conn.prepareStatement(sql);
                psmt.setString(1, mdto.getId());
                psmt.executeUpdate();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
    }

    public void modyMem(M_DTO mdto) {
        if (connect()) {
            String sql = "update member2 set name =?, pass=?, addr=? where id=?";
            try {
                PreparedStatement psmt = conn.prepareStatement(sql);
                psmt.setString(1, mdto.getName());
                psmt.setString(2, mdto.getPass());
                psmt.setString(3, mdto.getAddr());
                psmt.setString(4, mdto.getId());
                psmt.executeUpdate();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
    }

    public ArrayList<Member> allSelect() {
        ResultSet rs;
        if (connect()) {
            String sql = "select * from member2";
            ArrayList<Member> mList = new ArrayList<>();
            try {
                Statement stmt = conn.createStatement();
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    Member tempM = new Member();
                    tempM.setId(rs.getString("id"));
                    tempM.setName(rs.getString("name"));
                    tempM.setPass(rs.getString("pass"));
                    tempM.setAddr(rs.getString("addr"));
                    tempM.setPoint(rs.getInt("point"));

                    mList.add(tempM);
                }
                conn.close();
                return mList;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
        return null;
    }

    public boolean chkMem(M_DTO mdto) {
        ResultSet rs;
        boolean flag = true;
        if (connect()) {
            String sql = "select * from member2 where id =" + "'" + mdto.getId() + "'";
            try {
                Statement stmt = conn.createStatement();
                rs = stmt.executeQuery(sql);
                while(rs.next()) {
                    flag = false;
                }
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
        return flag;
    }

    public ArrayList<Member> schMem(String search) {
        ResultSet rs;
        if (connect()) {
            String sql = "select * from member2 where id like " + "'%" + search + "%' or name like " + "'%" + search
                    + "%'";
            ArrayList<Member> mList = new ArrayList<>();
            try {
                Statement stmt = conn.createStatement();
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    Member tempM = new Member();
                    tempM.setId(rs.getString("id"));
                    tempM.setName(rs.getString("name"));
                    tempM.setPass(rs.getString("pass"));
                    tempM.setAddr(rs.getString("addr"));
                    tempM.setPoint(rs.getInt("point"));

                    mList.add(tempM);
                }
                conn.close();
                return mList;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
        return null;
    }

}

멤버 DTO클래스

package dao_dto;

public class M_DTO {
    private String id;
    private String name;
    private String pass;
    private String addr;
    private int point;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    public int getPoint() {
        return point;
    }

    public void setPoint(int point) {
        this.point = point;
    }

}
profile
공부하는 개발자

0개의 댓글