티스토리 뷰
자바 프로그램에서 SQL문을 실행하기 위해 DB를 연결해 주는 작업
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 |
package com.ktds.jmj.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.ktds.jmj.vo.EmployeesVO;
public class EmployeesDAO { //data access object
public List<EmployeesVO> getAllEmployees() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver"); // 동적 클래스 로드 (oracleDriver이라는 클래스를 로드하는것)
} catch (ClassNotFoundException e) { // catch에 있는 모든 것들은 이와 같이 쓴다.
throw new RuntimeException(e.getMessage(), e);
}
Connection conn = null;
PreparedStatement stmt = null; // statement와 PreparedStatement는 데이터를 어떤식으로 바이딩하는가의 차이가 있다.
ResultSet rs = null; // select 할 때만 필요하다. 결과를 담아야 하므로
//employees list에 데이터를 하나씩 넣을 것이다.
List<EmployeesVO> employees = new ArrayList<EmployeesVO>();
// 담아주는 코드
try {
// DB에 연결함
conn = DriverManager.getConnection(Const.DB_URL, Const.DB_USER, Const.DB_PASSWORD);
//query를 실행할 준비를 함
String query = " SELECT * FROM EMPLOYEES "; //앞뒤로 공간두기
stmt = conn.prepareStatement(query); // 쿼리 실행 준비 완료
// Query의 실행 결과를 가져온다.
// Select 쿼리 일 때만 사용한다.
rs = stmt.executeQuery();
EmployeesVO employee = null;
while ( rs.next() ) { //next의 의미 : 읽어올때 데이터의 처음부터 읽어오므로 next를 만나면 한 로우를 읽어오고 다음로우로 내려간다. next하면 한줄한줄 내려가면서 데이터를 가져오게 하는 역할 끝까지 가서 next를 만나면 반복이 끝난다.
employee = new EmployeesVO();
employee.setEmployeeId(rs.getInt("EMPLOYEE_ID")); // 가져올 컬럼의 데이터 타입에 따라서 결정, 괄호 안에는 컬럼 이름을 적어준다. EMPLYOEE_ID에 해당하는 데이터를 가져온다.
employee.setFirstName(rs.getString("FIRST_NAME"));
employee.setLastName(rs.getString("LAST_NAME"));
employee.setEmail(rs.getString("EMAIL"));
employee.setPhoneNumber(rs.getString("PHONE_NUMBER"));
employee.setHireDate(rs.getString("HIRE_DATE"));
employee.setJobId(rs.getString("JOB_ID"));
employee.setSalary(rs.getInt("SALARY"));
employee.setCommissionPct(rs.getDouble("COMMISSION_PCT"));
employee.setManagerId(rs.getInt("MANAGER_ID"));
employee.setDepartmentId(rs.getInt("DEPARTMENT_ID"));
//만들어둔 리스트에 넣는다.
employees.add(employee);
}
} catch (SQLException e) {
throw new RuntimeException(e.getMessage(), e);
}
finally { //다쓰면 연결을 해제해야한다. 해제를 안시키면 다른 사용자가 쓸수 없으므로. 닫을때 finally를 사용하여 닫는다.
// 열렸는지 체크하면서 닫아줘야한다. 값이변경됬는지 보고 열린지 판단 / resultset부터 반대로 확인 > statement > connection 순으로
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {}
}
}
return employees;
}
}
|
cs |
'BackEnd > JAVA' 카테고리의 다른 글
[JAVA] Random 숫자 생성 (0) | 2017.06.27 |
---|---|
계산기 프로그램 (0) | 2016.02.02 |
은행 대출 프로그램 (0) | 2016.02.02 |
자전거 대여점 프로그램 (0) | 2016.02.02 |
비행기 좌석 예약 시스템 (0) | 2016.02.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- table
- Baekjoon Online Judege
- BFS
- mybatis
- order by
- maven
- onBackPressed
- 안드로이드 비콘
- DFS
- indexOf
- servlet
- DP
- Spring
- restfb
- RequestMapping
- boj
- algorithm
- jsp
- 안드로이드 스튜디오
- AlertDialog.Builder
- sort
- REDIRECT
- INSERT
- java
- 예외처리
- 이클립스
- controller
- list
- onPostExecute
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함