설치및 등록방법은 아래 게시글 확인해주세요
https://memory-develo.tistory.com/82
Character Set 설정
문자 인코딩 방식이 맞지 않으면 해당 문자가 제대로 출력되지 않는 현상이있으므로
이클립스 작업 파일에 대한 문자셋을 UTF-8로 변경해주어야함
아래의 두가지 언어셋설정해주세요,
JDBC 사용 객체
DriverManager
데이터 원본에 JDBC 드라이버를 통하여 커넥션을 만드는 역할
Class.forName() 메소드를 통해 생성되며 반드시 예외처리를 해야 함
직접 객체 생성이 불가능하고 getConnection() 메소드를 사용하여 객체 생성 가능
Connection
특정 데이터 원본과 연결된 커넥션을 나타내며 Statement 객체를 생성할 때도 Connection 객체를 사용하여 createStatement() 메소드를 호출하여 생성 SQL 문장을 실행시키기 전에 우선 Connection 객체가 있어야함
Statement
Connection객체에 의해 프로그램에 리턴되는 객체에 의해 구현되는 일종의 메소드 집합 정의
Connection클래스의 createStatement 메소드를 호출하여 얻어지며
생성된 Statement객체로 질의문장을 String 객체에 담아 인자로 전달하여
executeQuery() 메소드를 호출하여 질의 수행
ResultSet
SELECT문을 사용한 질의 성공 시 ResultSet 으로 반환
SQL 질의에 의해 생성된 테이블을 담고 있으며 커서 로 특정 행에 대한 참조 조작
이렇게 하면 작업끝
EMP 테이블에 저장된 값
자바 JDBC 이용하여 전체회원정보 조회한 값
전체코드
package com.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;
public class JDBCModel {
// 회원정보 전체 조회하기
public void selectAll() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// DriverManager 사용하기
// 1. 무슨드라이버를 사용할지 지정
// - ClassNotFound예외 처리 필수
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2. 오라클의 어떤정보에 연결할것이지 (연결주소, 아이디, 비밀번호)
// 저같은경우는 제컴퓨터에 연결할것이기때문에 127.0.0.1 으로작성함
// localhost 로작성해도 무방
// SQLException 예외처리 필수
// 조회하고 사용한 트랜지션은 닫아줘야하기 때문에 메소드 지역변수로 선언후 사용해야함
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe", "scott", "tiger");
// 3. Connection
// 조회하고 사용한 트랜지션은 닫아줘야하기 때문에 메소드 지역변수로 선언후 사용해야함
stmt = conn.createStatement();
// 4. Statement
// 오라클의 emp 테이블의 전체 정보를 조회한다는 변수선언
String query = "SELECT * FROM EMP";
// executeQuery의 반환값은 ResultSet -> select조회할때 사용
// executeUpdate의 반환값은 int -> DML 구문 (INSERT, UPDATE, DELETE) 구문에서 사용하면됨
rs = stmt.executeQuery(query);
// 5. ResultSet
// 만약 조회결과 를 받아오고 한행의값을 ResultSet이라고 한다.
// 주로 while반복문 이용하여 많이사용함
while(rs.next()) { // rs.next() >> 다음행의 값이있는지? 있으면 true, 없으면 false 반환
/*
* EMPNO NUMBER
ENAME VARCHAR2(10 BYTE)
JOB VARCHAR2(9 BYTE)
MGR NUMBER
HIREDATE DATE
SAL NUMBER
COMM NUMBER
DEPTNO NUMBER
* */
//값 가져올때는 rs.get자료형("컬럼명") 메소드이용
int empNo = rs.getInt("EMPNO");
String empName = rs.getString("ENAME");
String job = rs.getString("job");
int mgr = rs.getInt("MGR");
Date hireDate = rs.getDate("HIREDATE");
int sal = rs.getInt("sal");
int comm = rs.getInt("COMM");
int deptNo = rs.getInt("DEPTNO");
System.out.println(empNo + ", " + empName + "," + job + ", " + mgr + ", " + hireDate + ", "
+ sal + ", " + comm + ", " + deptNo);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 사용하고 항상 사용한 객체 close() 작업해줘야함!
// 안그러면 종료안됨
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
PreparedStatement
Connection 객체의 PreparedStatement() 메소드를 사용하여 객체 생성
SQL 문장이 미리 컴파일 되고 실행 시간동안 인수 값을 위한 공간을 확보한다는 점에서 Statement오 ㅏ다름
각각의 인수에 대해 위치홀더 를 사용하여 SQL문장을 정의할수 있게 함
Statement 랑 사용법 비슷함
정확한 예시는 아래 예제문제를통해 알아볼예정
만약 회원을 추가할때 의 약간의 예시
실습문제는 다음페이지.....
'프로그래밍 > JAVA' 카테고리의 다른 글
JAVA - Oracle JDBC(도서관리프로그램) 예제 (0) | 2021.07.13 |
---|---|
JAVA - Oracle JDBC 간단 예제 (0) | 2021.07.12 |
JAVA - Oracle JDBC 다운, 적용 (0) | 2021.07.12 |
JAVA - GUI(Graphic User Interface) (0) | 2021.06.14 |
JAVA - 정렬(Comparable, Comparator) (0) | 2021.06.08 |