seong

JDBC 데이터 SELECT(reading) 실습 본문

데이터베이스/JDBC

JDBC 데이터 SELECT(reading) 실습

hyeonseong 2022. 8. 16. 12:25

프로그래밍을 할 때 책임을 분리 시켜주는것이 좋다.

1. DB 엔티티화 

2. DB 연결

3. DB 데이터 가져와 엑세스 (DAO)

- 재활용을 위해서 DAO를 무조건 작성 해 주어야 한다. 

 

1. DB를 엔티티화 시켜줄 클래스 Emp

package db;

import java.sql.Timestamp;
// 엔티티
public class Emp {
	private int empno;
	private String ename;
	private String job;
	private int mgr;
	private Timestamp hiredate;
	private int sal;
	private int comm;
	private int deptno;
	
	
	public int getEmpno() {
		return empno;
	}
	public void setEmpno(int empno) {
		this.empno = empno;
	}
	public String getEname() {
		return ename;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public int getMgr() {
		return mgr;
	}
	public void setMgr(int mgr) {
		this.mgr = mgr;
	}
	public Timestamp getHiredate() {
		return hiredate;
	}
	public void setHiredate(Timestamp hiredate) {
		this.hiredate = hiredate;
	}
	public int getSal() {
		return sal;
	}
	public void setSal(int sal) {
		this.sal = sal;
	}
	public int getComm() {
		return comm;
	}
	public void setComm(int comm) {
		this.comm = comm;
	}
	public int getDeptno() {
		return deptno;
	}
	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}


	
}

2. DB 연결해줄 클래스 DBConnection

역할 : DB를 자바와 연결 시켜 준다. 

package db;

import java.sql.Connection;
import java.sql.DriverManager;

// DB 연결 해줄 클래스
public class DBConnection {
	static Connection connection() {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			Connection conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:xe",
					"SCOTT", // 아이디
					"TIGER"// 비밀번호 
					);
			return conn;
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	
	}
}

3. EmpDao

역할 : DB에 접근해 데이터 베이스를 가져올 역할.

package db;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

// Data Access Object
// 데이터 베이스에 접근해서 데이터 베이스를 엑세스 하는 역할 
public class EmpDao {

	public ArrayList<Emp> 직원목록보기() {
		// 최종 저장 공간은 코드의 가장 위에 작성해 준다.
		ArrayList<Emp> emps = new ArrayList<>();
		try {
			// 1. DB 연결
			Connection conn = DBConnection.connection();
			// 2. 문장 완성
			PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM emp");

			// 3. 문장 전송
			ResultSet rs = pstmt.executeQuery();

			// 4. 커서 내리기
			while (rs.next()) {// 14바퀴
				Emp emp = new Emp();
				emp.setEmpno(rs.getInt("empno"));
				emp.setEname(rs.getString("ename"));
				emp.setJob(rs.getString("job"));
				emp.setMgr(rs.getInt("mgr"));
				emp.setHiredate(rs.getTimestamp("hiredate"));
				emp.setSal(rs.getInt("sal"));
				emp.setComm(rs.getInt("comm"));
				emp.setDeptno(rs.getInt("deptno"));
				emps.add(emp);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return emps;

	}

	public Emp 직원한건보기(int empno) {
		Emp emp = new Emp();
		try {
			// DB연결
			Connection conn = DBConnection.connection();
			PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM emp WHERE empno =" + empno);
			ResultSet rs = pstmt.executeQuery();

			if (rs.next()) {
				emp.setEmpno(rs.getInt("empno"));
				emp.setEname(rs.getString("ename"));
				emp.setJob(rs.getString("job"));
				emp.setMgr(rs.getInt("mgr"));
				emp.setHiredate(rs.getTimestamp("hiredate"));
				emp.setSal(rs.getInt("sal"));
				emp.setComm(rs.getInt("comm"));
				emp.setDeptno(rs.getInt("deptno"));
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return emp;
	}
}

4. 실행 시켜줄 main 

package db;

import java.util.ArrayList;

public class EmpApp {
	public static void main(String[] args) {
		EmpDao empDao = new EmpDao();
		ArrayList<Emp> emps = empDao.직원목록보기();
		Emp emp = empDao.직원한건보기(7369);// 7369 empno 
		System.out.println(emp.getEname());
	}
}

출력은 empno가 7369인 name만 출력


한건보기 Dao메소드 부분

한건 보기 위해서 메소드 호출에 인자 값으로 한개를 주었다.

DB연결하고 쿼리문 작성 부분에서 인자 값으로 넘겨준다.

한건 보기는 한 사람만 보면 되기 때문에 굳이 ArrayList를 사용할 필요가 없다. 

그러므로 Emp객체를 생성하고 if문 조건에서 true이면 실행

'데이터베이스 > JDBC' 카테고리의 다른 글

JDBC 설계 및 만드는 순서  (0) 2022.08.18
JDBC AppService 만들기(SCOTT)  (0) 2022.08.17
JDBC INSERT (SCOTT)  (0) 2022.08.16
자바를 오라클 DB에 연동하기  (0) 2022.08.12