Mint Flavor Chocolate DEV
JAVA : JDBC를 사용하여 Oracle과 연동하기 본문
JDBC Oracle Property : 환경
- driver = "oracle.jdbc.driver.OracleDriver"
- url = "jdbc:oracle:thin:@localhost:1521:XE"
- user = "DB user 아이디"
- password = "DB user 비밀번호"
- driver = "oracle.jdbc.driver.OracleDriver"
- url = "jdbc:oracle:thin:@localhost:1521:XE"
- user = "DB user 아이디"
- password = "DB user 비밀번호"
JDBC Exception Handling
- ClassNotFoundException
- SQLException
- ClassNotFoundException
- SQLException
JDBC Driver 위치
Oracle : ojdbc6.jar => jdk6.0 jdbc 구현 driver
- 컴퓨터시스템(공통) 사용 : jdk\jre\lib\ext> 폴더에 복사
- 프로젝트 단위 사용 : 별도의 classpath 추가 설정
Oracle : ojdbc6.jar => jdk6.0 jdbc 구현 driver
- 컴퓨터시스템(공통) 사용 : jdk\jre\lib\ext> 폴더에 복사
- 프로젝트 단위 사용 : 별도의 classpath 추가 설정
javac / java 사용한 클래스를 찾아가는 검색 경로 : classpath
- rt.jar : Java SE (표준 api)
- jdk\jre\lib\ext> 폴더에 있는 *.jar
- set classpath = 환경설정 폴더 지정한 파일
- classpath 환경변수 미설정시에는 현재 폴더(working directory)
- rt.jar : Java SE (표준 api)
- jdk\jre\lib\ext> 폴더에 있는 *.jar
- set classpath = 환경설정 폴더 지정한 파일
- classpath 환경변수 미설정시에는 현재 폴더(working directory)
JDBC API (Java.sql.*, Javax.sql.*)
- connection => DB 연결
- statement / prepareStatement / CallableStatement
execute(sql)
: boolean / executeUpdate(sql)
: int / executeQuery(sql)
: Resultset- ResultSet => 결과 객체
- Driver Manage 클래스 : DB와 연결요청 =>
getConnection(url, user, password)
- connection => DB 연결
- statement / prepareStatement / CallableStatement
execute(sql)
: boolean /executeUpdate(sql)
: int /executeQuery(sql)
: Resultset- ResultSet => 결과 객체
- Driver Manage 클래스 : DB와 연결요청 =>
getConnection(url, user, password)
JDBC 프로그래밍 절차
- Driver loading :
Class.forName(driver)
==> 생성자 - DB 서버 연결 :
Connection conn = DriverManager.getConnection(url, user, password);
- SQL 통로개설 :
Statement stmt = conn.createStatement();
// 동적 SQL 수행통로 - SQL 수행 :
stmt.excuteUpdate(sql);ResultSet rs = stmt.excuteQuery(sql);
- 결과 처리
- 자원 해제 :
rs.close(); stmt.close(); conn.close();
===> close(rs, stmt, conn)
, close(stmt, conn)
- Driver loading :
Class.forName(driver)
==> 생성자 - DB 서버 연결 :
Connection conn = DriverManager.getConnection(url, user, password);
- SQL 통로개설 :
Statement stmt = conn.createStatement();
// 동적 SQL 수행통로 - SQL 수행 :
stmt.excuteUpdate(sql);ResultSet rs = stmt.excuteQuery(sql);
- 결과 처리
- 자원 해제 :
rs.close(); stmt.close(); conn.close();
===>close(rs, stmt, conn)
,close(stmt, conn)
Statement
- 동적 SQL 수행 통로
- 실행시점 SQL 구문에 오류 발생
- N/W traffic 발생 : sql 구문, data가 함께 전송
- SQL 문자열 변환
- SQL Injection 보안이슈 야기
- 동적 SQL 수행 통로
- 실행시점 SQL 구문에 오류 발생
- N/W traffic 발생 : sql 구문, data가 함께 전송
- SQL 문자열 변환
- SQL Injection 보안이슈 야기
preparedStatement
- 정적 SQL 수행 통로
- N/W traffic 감소 : DATA만 전송
- setString() : sql 문자열로 자동 변환처리
- SQL Injection 발생 방지
- 정적 SQL 수행 통로
- N/W traffic 감소 : DATA만 전송
- setString() : sql 문자열로 자동 변환처리
- SQL Injection 발생 방지
CollableStatement
- DB 서버에 저장된 Stored Produre, Stored Function 호출 사용
- PL/SQL
- DB 서버에 저장된 Stored Produre, Stored Function 호출 사용
- PL/SQL
Statement 예제 코드
Statement stmt = conn.createStatement();
String sql = "insert into members values('aaa','bbb','ccc')";
stmt.executeUpdate(sql);
Statement stmt = conn.createStatement();
String sql = "insert into members values('aaa','bbb','ccc')";
stmt.executeUpdate(sql);
PrepareStatement 예제 코드
String sql = "insert into members values(?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memberId");
pstmt.setInt(2,mileage);
pstmt.setString(3, mobile);
pstmt.excuteUpdate();
주의사항 : ?에 매핑되는 값을 설정하고 excuteUpdate()를 해줘야 실행됨
String sql = "insert into members values(?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memberId");
pstmt.setInt(2,mileage);
pstmt.setString(3, mobile);
pstmt.excuteUpdate();
주의사항 : ?에 매핑되는 값을 설정하고 excuteUpdate()를 해줘야 실행됨
'JAVA' 카테고리의 다른 글
JPA 관련 학습정리 시리즈 (0) | 2021.10.12 |
---|---|
JDBC Pattern (0) | 2017.08.21 |