반응형
JDBC 객체 종류
Connection | DB의 연결정보를 담고 있는 객체(IP주소, PORT번호, 계정아이디, 비밀번호) |
(Prepared)Statement | 해당 DB에 SQL문을 전달하고 실행한 후 결과를 받아내는 객체 |
ResultSet | SELECT문 실행 시 조회된 결과들이 담겨있는 객체 |
JDBC 처리 순서
- JDBC Driver 등록 : 해당 DBMS가 제공하는 클래스 등록
- Connection 생성 : 접속하고자 하는 DB에 정보를 입력해서 DB에 접속하면서 생성
- Statement 생성 : Connection 객체를 이용하여 생성
- SQL문을 전달하면서 실행 : Statement 객체를 이용해서 SQL문을 실행
- SELECT문일 경우 excuteQuery()메소드를 이용하여 실행
- 나머지 DML문일 경우 excuteUpdate()메소드를 이용하여 실행 - 결과 받기
- SELECT문일 경우
1) ResultSet객체(조회된 데이터가 담겨있음)로 받는다
2) ResultSet객체에 담긴 데이터들을 하나씩 뽑아서 VO 객체에 담기(ArrayList로 묶어서 관리하기)
DML문일 경우
1) 나머지 DML문일 경우 - int형 변수(처리된 행 개수)로 받기
2) 트랜잭션 처리(성공시 COMMIT; 실패시 ROLLBACK;) - 사용완료한 JDBC용 객체들 자원 반납(close) -> 생성의 역순으로 진행
INSERT문 코드 예시 → 처리된 행수(int) 결과를 반환하는 경우
//결과(처리된 행수)를 받아놓을 변수
int result = 0;
//DB에 연결정보를 보관할 객체
Connection conn = null;
//sql문 전달하여 실행후 결과 객체
Statement stmt = null;
//실행할 sql문 작성
String sql="INSERT INTO TEST VALUES(1,'김일등',SYSDATE)";
try {
//1.JDBC DRIVER 등록
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.Connection 객체 생성 : DB에 연결
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
//3.Statement 객체 생성 : connection 객체를 이용하여 연결
stmt = conn.createStatement();
//4,5. SQL문 전달하고 실행 후 결과(처리된 행수) 받기
result = stmt.excuteUpdate(sql);
//6.트랜잭션처리
if(result>0) {
conn.commit();
}else {
conn.rollback();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
//7)사용한 객체들 반납하기(생성 역순)
try {
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(result>0) {
System.out.println("성공적으로 삽입되었습니다");
}else {
System.out.println("데이터 삽입에 실패하였습니다.");
}
}
SELECT문 코드 예시
//필요한 변수 세팅
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
//실행할 sql문
String sql = "SELECT*FROM TEST";
try {
//1)드라이버 등록
Class.forName("oracle.jdbc.driver.OracleDriver");
//2)Connection 객체 생성
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
//3)Statement 객체 생성
stmt=conn.createStatement();
//4,5)sql문 전달후 ResultSet으로 결과 받기
rset=stmt.executeQuery(sql);
//6)ResultSet에 담긴 데이터 꺼내오기
//현재 참조하는 rset으로부터 어떤 컬럼에 해당하는 값을 어떤 타입에 담을것인지 제시
//db의 컬럼명을 제시(대소문자 구분x)
while(rset.next()) {;//rset데이터 가져오기전에 커서위치를 첫줄로 옮기는 용도
int tno=rset.getInt("TNO"); //TNO에 있는 데이터를 가지고 오곘다
String tname=rset.getString("TNAME");
Date tdate=rset.getDate("TDATE");
System.out.println(tno+","+tname+","+tdate);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
rset.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
반응형
'Web/Tool/ETC' 카테고리의 다른 글
[slick] prevArrow, nextArrow 앞뒤 이동 버튼 위치 변경 (0) | 2023.04.28 |
---|---|
[ETC] 유효성 검사 (0) | 2023.03.28 |
Template Engine 이란? (0) | 2023.03.27 |
[Tomcat] profile 설정 (0) | 2023.03.27 |
[ETC] MacOS jdk11 설치 및 환경변수 설정 (0) | 2023.03.17 |