seong
JDBC 데이터 SELECT(reading) 실습 본문
프로그래밍을 할 때 책임을 분리 시켜주는것이 좋다.
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());
}
}
한건보기 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 |