티스토리 뷰

자바 프로그램에서 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
«   2024/05   »
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
글 보관함