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 |