본문 바로가기

Learning/SQL

namecard 완성하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package com.oracle.namecard;
//테이블 NAMECARD의 열들을 멤버변수로 하는 클래스 Namecard
public class Namecard {
    private int no;
    private String name;
    private String mobile;
    private String email;
    private String company;
    
    public Namecard() {}
    
    public Namecard(String name, String mobile, 
            String email, String company) {
        this.name = name;
        this.mobile = mobile;
        this.email = email;
        this.company = company;
    }
    //필드변수 초기화 생성자 (no 있음) => dao의 insert메소드 참고
    public Namecard(int no, String name, 
            String mobile, String email, String company) {
        this.no = no;
        this.name = name;
        this.mobile = mobile;
        this.email = email;
        this.company = company;
    }
    // 멤버변수들을 getter/setter 세팅
    public int getNo() {
        return no;
    }
    public void setNo(int no) {
        this.no = no;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getCompany() {
        return company;
    }
    public void setCompany(String company) {
        this.company = company;
    }
    //toString()메소드는 클래스 변수들을 일렬로 문자열로 만들어 리턴
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("[NO: ");
        sb.append(no);
        sb.append("] ");
        sb.append(name);
        sb.append(" ,Mobile: ");
        sb.append(mobile);
        sb.append(" ,Email: ");
        sb.append(email);
        sb.append(" ,Company: ");
        sb.append(company);
     // 멤버변수의 값들을 모아서 하나의 문자열로 리턴
        return sb.toString();
    }
    
}
 
cs

 

 


 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package com.oracle.namecard;
 
import java.sql.*;
import java.util.ArrayList;
 
public class NamecardDao {
    //DAO: data access object=>데이터에 접근하는 객체
    
    static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:XE";  
    static final String USER = "scott";
    static final String PASSWORD = "1234";
    
    //1. 드라이버 로드를 퍼블릭 메소드로 정의
    public NamecardDao() {
        try { // 오라클 DB 드라이버 로드
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    
    private Connection getConnection() throws SQLException {
        // DB 연결을 메소드로 만들기
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }
            //먼저 ResultSet 이 널값이 아니면 종료, 다음 Statement 종료, 마지막으로 커넥션 종료
    private void close(ResultSet rs, PreparedStatement pstmt, Connection con) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (pstmt != null) {
            try {
                pstmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (con != null) {
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    // 입력 메소드
    public void insert(Namecard card) {
        Connection con = null;
        PreparedStatement pstmt = null;
        
        String sql = "INSERT INTO namecard VALUES (CARD_NO.NEXTVAL, ?, ?, ?, ?)";
 
        try {
            //DB 연결 메소드
            con = getConnection();
            pstmt = con.prepareStatement(sql);
            pstmt.setString(1, card.getName());
            pstmt.setString(2, card.getMobile());
            pstmt.setString(3, card.getEmail());
            pstmt.setString(4, card.getCompany());
            pstmt.executeUpdate();
            con.commit(); //데이터 저장
            System.out.println("입력 완료!");
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println(sql);
        } finally {
            close(null, pstmt, con);
        }
    }
    
    //번호 no 행 삭제    
    public void delete(int no) {
       //작성하기
        Connection con=null;
        PreparedStatement pstmt=null;
        
        String sql="DELETE FROM namecard WHERE NO=?";
        
        try {
            con=getConnection(); 
            pstmt=con.prepareStatement(sql); //sql준비
            pstmt.setInt(1,no);
            pstmt.executeUpdate(); //sql실행
            con.commit(); //데이터저장
            System.out.println("삭제완료!");
        } catch (SQLException e) {
        e.printStackTrace();
        System.out.println(sql);
        } finally {
            close(null,pstmt,con);
        }
    }
    
    //번호 no 행 검색
    public Namecard selectOne(int no) {
       //작성하기
        return null;
    }
    
    //이름으로 찾기
    public ArrayList<Namecard> selectByKeyword(String keyword) {       
        ArrayList<Namecard> matched = new ArrayList<Namecard>();
        // 작성하기  
        return matched;
    }
    
    //Namecard의 모든 행/열을 가져오기 번호순으로 
    public ArrayList<Namecard> selectAll() {
        ArrayList<Namecard> all = new ArrayList<Namecard>();
        // 작성하기
        return all; 
    }        
    
    //수정하기
    public void update(Namecard card) {
        //작성하기
    }
 
}
 
cs

 

 

 


 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.oracle.namecard;
 
import java.util.ArrayList;
 
public class Test {
 
    public static void main(String[] args) {
        NamecardDao dao = new NamecardDao();
        //1.insert(Namecard) test: 입력하기
//        Namecard hong = new Namecard("홍길동","010-1234-1234", "hk@naver.com", "부산IT");
//        dao.insert(hong); //실행후 sql developer 확인
//        no 삭제하기
        dao.delete(2);
/*
        //2.selectAll() test: 다 가져와서 리스트에 입력한후 콘솔에 출력
        ArrayList<Namecard> list = dao.selectAll();
        int size = list.size();
        //System.out.println(size);
        for (int i = 0; i < size; i++) {
            Namecard namecard = list.get(i);
            System.out.println(namecard);
        }
 
 
 
        //3.selectByKeyword(String) test: 이름으로 찾기
        ArrayList<Namecard> matched = dao.selectByKeyword("홍길동");
        int length = matched.size();
        System.out.println(length + "명 찾음.");
        for (int i = 0; i < length; i++) {
            Namecard namecard = matched.get(i);
            System.out.println(namecard);
        }
 
 
 
        //4.selectOne(int) test : 번호로 찾기
        Namecard card = dao.selectOne(5);
        System.out.println("5번 찾음");
        System.out.println(card);
 
 
 
        //5.delete(int) test : 번호로 삭제하기
        dao.delete(4);
        ArrayList<Namecard> all = dao.selectAll();
        int cardNum = all.size();
        for (int i = 0; i < cardNum; i++) {
            Namecard namecard = all.get(i);
            System.out.println(namecard);
        }
 
 
      
        //6. update(Namecard) test :  card의 no번호와 같은 NAMECARD 행을  이름, 전화번호, 이메일, 회사 업데이트(수정하기)
        Namecard card = dao.selectOne(5);
        System.out.println(card);
        card.setEmail("alison@ggmail.org");
        card.setMobile("222-2222-2222");
        dao.update(card);
        System.out.println(card);
*/
    }
}
 
cs

'Learning > SQL' 카테고리의 다른 글

수강편람 테이블에서 과목별 현재 수강인원도 함께 출력하기  (0) 2021.03.08
PreparedStatement  (0) 2020.06.23
JDBC SELECT  (0) 2020.06.23
JDBC INSERT  (0) 2020.06.23
JDBC Test  (0) 2020.06.23