728x90

 

JDBC 연결 관련 클래스 5가지

1)Class.forName(”JDBC드라이버명”)

사용할 Database의 JDBC 드라이버 지정하는 역할

2)DriverManager

연결할 계정 정보 지정

3)Connection

데이터베이스에 연결된 실질적인 통로

4) Statement / PreparedStatement

쿼리를 전달하는 역할

5)ResultSet

SELECT문에 대한 결과값을 담고 있는 객체

 

 

package com.kh.model.dao;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import com.kh.model.vo.Employee;

public class EmployeeDAO {
	
	
	// 목표 : 전체 사원 정보 조회
	public ArrayList<Employee> selectAll() {
		ArrayList<Employee> list = null;
		Connection conn = null;
		Statement stmt =  null;
		ResultSet rset =  null;
		
		// JDBC 드라이버 등록
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver"); // 오라클 드라이버 풀네임. 버젼마다 약간다름
			conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe", "SCOTT", "qrwe"); // 디벨로퍼에서 계정등록 시에 세부정보에서 포트번호,SID에 있는걸로 맞추면된다. 19c는 orcl일 것임. 
			
//			System.out.println(conn); // 주소값 반환 oracle.jdbc.driver.T4CConnection@f2a0b8e ← 모든 컴퓨터가 같게 뜬다
			
			String query = "SELECT * FROM EMP"; // SCOTT계정의 테이블정보 쿼리문 적기 // 주의 : 세미콜론 뒤에 안붙인다
			stmt = conn.createStatement();  	// java.sql.statement 임포트
			stmt.executeQuery(query); 			// select문 - executeQuery() - 객체 ResultSet 
			rset = stmt.executeQuery(query); 	// 과정설명 요약 : query에서 작성한 쿼리문을  stmt.executeQuery(query)에서 보내고, ResultSet rset = stmt.executeQuery(query)에서 결과를 반환 받음
			list = new ArrayList<Employee>(); // 순서 지키기 위해 ArrayList 사용
			while(rset.next()) { 	// ResultSet.next() : 다음 행이 존재하면 true반환, 없으면 false반환
				
				int empNo = rset.getInt("EMPNO"); // ResultSet 안에 있는 메소드 getInt() // SCOTT계정 EMP테이블의 empno컬럼 데이터 가져오기
				String empName = rset.getString("ENAME");
				String job = rset.getString("JOB"); 	// 컬렴명 소문자도 괜찮. 괄호 안 대소문자 관계x
				int mgr = rset.getInt("MGR");  
				Date hireDate = rset.getDate("HIREDATE"); 
				int sal = rset.getInt("SAL");
				int comm = rset.getInt("COMM");
				int deptNo = rset.getInt("DEPTNO");		// model.vo로 데이터를 넘기는 코드
				Employee e = new Employee(empNo, empName, job, mgr, sal, comm, deptNo); // empNo~deptNo까지의 데이터를 다 담아서 한 뭉텅이로 만든 코드
				
				list.add(e);  // ArrayList<Employee> list에 Employee e 객체를 담음
				
			}
			System.out.println(list);			// 전체 사원 14명의 전체 정보를 가져옴 
 
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				rset.close();
				stmt.close(); 
				conn.close(); 
			} catch (SQLException e) {
				e.printStackTrace();
			} 
		}
		
		return list; // view로 데이터를 보내는 코드 
		
		// model.vo로 가서 ArrayList<Employee> list에 값을 받는다고 코드 지정해줄 것
		
	}
	
	
}
728x90
반응형

+ Recent posts