본문 바로가기
Database

JDBC를 이용한 데이터베이스 연결 방식

by 설총이 2018. 6. 25.

맨처음 ★★★ojdbc.jar 파일을 프로젝트에 추가하고 그 안에 있는 오라클 드라이버 로딩해야한다.


1단계 :: 드라이버 로드


public class JdbcEx {

static {

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

}catch(ClassNotFoundException cnfe) {

cnfe.printStackTrace();

}

}


-> Class.forName() 로 드라이버 실행.



--------------------------------------------------------------------------------------------------


2단계 :: Connection 객체 생성


import java.sql.*; 로 구현받아서

DriverManager.getConnection 메서드로 실행한다.


Connection con(커넥션 참조변수)

= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "scott", "tiger");

*getConnection 안에 쓰는 String 값 순서

dbURL @ip/로컬호스트/port번호/SID/유저명/패스워드



--------------------------------------------------------------------------------------------------


3단계 :: 쿼리문 객체 생성(인터페이스라 직접 못쓰고 커넥션메서드로 사용)

Statement stmt = con(커넥션참조변수).createStatement();



-------------------------------------------------------------------------------------------------


4단계 :: 쿼리문 객체 생성한 후에 executeUpdate / Query를 생성

executeUpdate :: insert / update / delete / create / drop
(데이터를 가져올 필요가없는 문을 int타입으로 받아오는 ★'변경된 레코드의 갯수')
executeQuery :: Select 문으로 가져오는 쿼리문
(데이터를 가져올수있는 resultset타입으로 가져옴)


Statement stmt = con.createStatement(); // 객체 생성후

int updateCount = stmt.executeUpdate("insert/update/delete문");
->int타입으로 받아오는 변경된 레코드의 갯수.
ResultSet rs = stmt.executeQuery("select 문");
->resultset타입(결과의 집합)으로 첫줄엔 컬럼명 둘째줄부터 레코드이고
커서가 칼럼을 가리키고있기 때문에 next()를 무조건 실행해서 레코드를 읽어야한다.


sb.toString()에 테이블 생성문인 create문을 "" 문자열로 넣어줄 수 있다.


-------------------------------------------------------------------------------------------------


5단계 :: getXXX


★★getXXX(매개변수)로 데이터를 가져오는데, 

varchar2타입이면 getString / number타입이면 getInt

매개변수에는 "칼럼명" / 인덱스번호(왼쪽부터 1로 시작) 둘 중 하나로 꺼낼 수 있다.




-------------------------------------------------------------------------------------------------



'Database' 카테고리의 다른 글

시퀀스(Sequence)  (0) 2018.06.20
조인(Join)  (0) 2018.06.18
무결성 제약 조건  (0) 2018.06.15
★트랜젝션(Transaction)  (0) 2018.06.15
테이블 구조를 결정하는 '삭제'  (0) 2018.06.15