JDBC 04번째 강의
1. PreparedStatement
: 미리 sql문이 세팅된 statement 가 db에 전송되어져서 컴파일되고,
sql문의 "?"부분만 나중에 세팅해서 실행하는 준비된 Statement
1) 장점
: 반복적인 똑같은 sql문을 사용할 때 Statement보다 실행속도가 빠르다
(이유 : ?를 제외한 sql문이 db에서 미리 컴파일 되서 대기하고 있기때문)
2) 단점
: 서로다른 sql문을 실행하려면 각각 preparedStatement를 생성해줘야한다.
(Statement는 다른 sql문을 실행할때에 한개만 생성해서 재활용하는 것이가능)
: stmt.executeQuery(sql) , executeUpdate(sql2);
Transaction = commit; , rollback; Savepoint
자동으로 Transaction 안되게 할수도 있다.
*Savepoint : 특정시점을 저장. 그 시점으로 rollback 가능.
Like에서 "?" : preparedStatement 사용하기
개념 : '다리밑' -> ? -> setString("다리밑");
개념 : '%args%' -> ? -> setString("%"+args[0]+"%");
or : '%args%' -> '%'||?||'%' -> setString(args[0]);
ResultSet (Cusor) :
* ResultSet.next(); :다음커서로 이동.
그외에 많은 기능이 있으나 잘 사용하지 않으므로 Pass!
Cusor를 마음대로 이동 가능하다.
1. Before First.
2. First.
3. Last.
4. After Last.
<ResultSet 추가 정리.>
: 데이터의 수정(참고만.)
1) 조건
- 단일 테이블에서 select를 해야한다.<즉, join은 안됨>
- select * 은 안된다.
2) 생성
connection.createStatement
( ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
* _updateable에 의해서 수정가능.
3) 방법
API 문서에서 ResultSet 참조.
<ResultSet OPTION>
1) static int CONCUR_READ_ONLY
: 읽기전용으로 정의.
2) static int TYPE_FORWARD_ONLY
: 오직 전진만 가능.
Forward_ONLY가 기본값. ( RS.NEXT()만가능)
3) static int TYPE_SCROLL_INSENSITIVE
: 들 민감한
4) static int TYPE_SCROLL_SENSITIVE
: 민감한.
즉, 멀티쓰레드 방식일때 사용 하는 부분이지만 초보는 안사용~~~
: 수정가능 : SELECT 할때만 가능.
<ResultSet Method>
l absolute() : row 위치로 이동.
l beforefirst() : 처음으로
l afterlast(): 마지막으로
l first() :
l last() :
l previous(); 그전 커서로 이동.
*커서를 마음대로 왔다 갔다 할 수 있는 기능.
<CONNECTION>
= By default a Connection object is in auto-commit mode
l void setAutoCommit(boolean autoCommit)
: Sets this connection's auto-commit mode to the given state.
<Auto Commit 해제시> : setAutoCommit(false);
* 중간에 Exception이 발생시에는 Rollback설정.
close해도 commit이 되지만 명시적으로 적어주는 것이 더 좋다.
java.sql.Savepoint
: 해당 시점까지의 정보를 저장하는 savepoint 설정
형식 : Savepoint sp = conn.setSavepoint();
rollback(Savepoint); : Savepoint 시점으로 Rollback();
: so, Savepoint 정의 시점과 rollback사이 값들을 무효화시킴.
CallableStatement
function - Procedure
function : 리턴값이 있는 것.
procedure : 리턴값이 없는 것.
function 복습.
CREATE OR REPLACE FUNCTION f_tax_jin
(sal IN number)
RETURN NUMBER
IS
-- 멤버변수 선언.
v_result NUMBER;
BEGIN
-- 메소드 안쪽.
-- 대입연산자 ( := )
v_result := (sal*12)*0.3; --연봉의 30%세금부여
RETURN v_result;
END;
SELECT f_tax(sal),ename FROM EMP;
프로시저 호출..
주로 은행권에서 높은 계급사람들이 하는 일임.
CallableStatement
l CallableStatement : DB상의 plsql을 이요하기위한 Statement입니다.
: function은 call하는 경우가 별로 없구요. 주로 procedure사용.
: function은 select문에서 사용.
l CallableStatement : 일반적으로 procedure를 사용하기위한 용도.
l Out prameter를 register(Type.)해주고 execute뒤에 get을 이용해서
결과를 받을 수 있다.
형식 : {call ….}
'자바 기본 공부 > 기초 이론' 카테고리의 다른 글
Java Thread Pool 예제 (0) | 2013.03.25 |
---|---|
Java Annotation 기초(Basic) (0) | 2012.12.24 |
자바 JDBC 기초 (0) | 2009.06.23 |
Thread에 대해서 집중~~~ (0) | 2009.06.23 |
주요레퍼런스 변수, Collection - ArrayList, Hashtable , Vector (0) | 2009.06.23 |