728x90
Statement
: Connection 클래스의 createStatement() 메소드를 호출하여 얻어지며,
SQL 질의문을 String에 담아 excuteQuery() 메소드를 호출하여 SQL 질의 수행
📌 Statement 작성 순서: 커넥션 생성 - SQL 작성 - Statement 객체 생성 - 수행 후 결과 반환
// 커넥션 생성
conn = DriverManager.getConnection(type + ip + port + sid, user, pw);
// SQL 준비
String sql = "SELECT * FROM EMPLOYEE WHERE EMP_ID =" + input;
// Statement 생성
stmt = conn.createStatement();
📌 수행 후 결과 반환
SQL 수행 후 결과 반환 받기
Statement - SELECT : stmt.excuteQuery(sql);
DML 수행 후 결과 반환 받기
Statement - DML : stmt.executeUpdate(sql);
PreparedStatement
: Connection 클래스의 preparedstatement() 메소드를 사용하여 인스턴스 생성
SQL 질의문을 위치홀더 인 ? 로 표현되는 String으로 정의한다.
📌 preparedStatement 작성 순서 : 커넥션 생성 - SQL 작성(? 사용) - PreparedStatement 객체 생성 (SQL 적재)
// 커넥션 생성
conn = DriverManager.getConnection(type + ip + port + sid, user, pw);
// SQL 작성
String sql = "INSERT INTO EMPLOYEE2 VALUES (?, ?, ?, ?, ?, ?, ?, 'S5', ?, ?
,200,SYSDATE, NULL, 'N')";
// preparedStatment 객체 생성(SQL 적재)
pstmt = conn.prepareStatement(sql);
💡 SQL 작성 시, " " / ' ' 홑따옴표 작성방법
" " : 칼럼명
' ' : 문자열
만약, sql developer 작성하게 된다면, 아래와 같이 작성을 한다.
String _sql = "UPDATE EMPLOYEE2 SET BONUS = 350 WHERE DEPT_CODE = '50'";
java에서 sql 작성하게 된다면 !! !! 부분에 새로운 값을 가져와야한다.
String _sql = "UPDATE EMPLOYEE2 SET BONUS = !!350!! WHERE DEPT_CODE = !!'50'!!";
String _sql = "UPDATE EMPLOYEE2 SET BONUS
= " + emp.getBonus() + " WHERE DEPT_CODE = '"+ emp.getDeptCode() +"'";
📌 ? 위치 홀더 값 대입
String sql = "INSERT INTO EMPLOYEE2 VALUES (?, ?, ?, ?, ?, ?, ?, 'S5', ?, ?
,200,SYSDATE, NULL, 'N')";
pstmt = setINT(1,emp.getId()); // 입력 받은 사번을 1번에 세팅한다.
pstmt.setString(2, emp.getEmpName());
pstmt.setString(3, emp.getEmpNo());
pstmt.setString(4, emp.getEmail());
pstmt.setString(5, emp.getPhone());
pstmt.setString(6, emp.getDeptCode());
pstmt.setString(7, emp.getJobCode());
pstmt.setInt(8, emp.getSelary());
pstmt.setDouble(9, emp.getBonus());
📌 수행 후 결과 반환
SQL 수행 후 결과 반환
PreparedStatment - SELECT : pstmt.excuteQuery();
DML 수행 후 결과 반환
PreparedStatment - DML : pstmt.executeUpdate();
✅ 커넥션 생성 후 자동 커밋 비활성화
conn = DriverManager.getConnection(type+ip+port+sid,user,pw);
- 생성된 커넥션을 이용해 SQL을 수행하게 되면 자동 커밋이 된다.
만일 개발자가 잘못 된 정보를 넣었을때도 잘동 커밋이 되는 경우가 있어 자동 커밋 비활성화를 해준다.
커넥션 생성
conn = DriverManager.getConnection(type+ip+port+sid,user,pw);
자동 커밋 비활성화
conn.setAutoCommit(false);
자동 커밋 후 result 결과값 반환 후 트렌젝션 제어 다시 작성하기
-- 작성하지 않는다면, close()가 실행되면 남은 트랜젝션 내용이 모두 commit 된다.
if (result > 0) conn.commit();// DML 성공시 commit 수행
else conn.rollback();// DML 실패시 rollback 수행
728x90
'ON > JDBC' 카테고리의 다른 글
[JDBC] 모듈화 진행하기 (0) | 2023.05.31 |
---|---|
[JDBC] XML | XML 연결 세팅하기 (1) | 2023.05.30 |
[JDBC] JDBC와 DB랑 연결 (0) | 2023.05.29 |
[JDBC] 개발환경 구축 및 이클립스 라이브러리 추가 (0) | 2023.05.26 |