03. DML
1) PrefaredStatement
- SQL문장이 미리 컴파일 되고 실행 시간동안 인수 값을 위한 공간을 확보한다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
사용법
1) palceholder : "?" 사용
2) placeholder는 복수 사용 가능. "?"의 나오는 순서에 따라 번호 부여
3) 참조변수명.set자료형(번호, 값);
주의사항
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 2000000);
rs = pstmt.executeQuery();
Statement 와 다르게 객체가 생성되면서 동시에 sql을 담는다.
DB와 커넥션 후 ResultSet을 가져오는 코드 작성에 sql을 넣으면 안된다
1
2
3
4
5
6
7
String sql = "SELEC EMP_NAME, EMP_NO, DEPT_CODE, SALARY"
+ " FROM EMPLOYEE"
+ " WHERE SALARY > ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 2000000);
rs = pstmt.executeQuery();
2) DML(INSERT, UPDATE, DELETE)
- DB에서 DML 수행 시 수행 후 int 반환
- 따라서 JDBC에서 ResultSet을 받을 필요 없이 int 변수에 결과 저장
- DB에 sql 수행시 .executeUpdate(); 로 시행
- Connection 하는 과정과 참조변수 닫고 메모리 반환하는 과정에서 자동 commit 되므로 세팅 필요
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int result;
conn = DriverManager.getConnection(url, user, pw);
conn.setAutoCommit(false);
....
result = pstmt.executeUpdate();
....
if(result > 0) conn.commit();
else conn.rollback();
....