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
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일1코딩][SQL][Oracle] SELECT, FUCTION, GROUP BY, HAVING, JOIN 100제 문제 풀이 (0) | 2022.04.01 |
---|---|
[1일1코딩][Java-SQL][JDBC] Statement & prepareStatement 차이 (0) | 2022.03.31 |
[1일1코딩][Java-SQL][JDBC] JDBC 연결 메뉴1번 구현 (0) | 2022.03.29 |
[1일1코딩] [SQL][ORACLE] PL/SQL - 조건문,반복문,예외처리 (0) | 2022.03.26 |
[1일1코딩] [Java] @Override toString() + setter/getter (0) | 2022.03.25 |