JDBC

2020. 5. 12. 13:11JAVA

1. JDBC(Java Database Connectivity)

- 자바를 이용해서 db를 사용하는것

- 자바로 만든 sql을 jdbc드라이버를 통해 디비에 전달하고 디비의 수행 결과를

  다시 jdbc드라이버를 통해 돌려받는 방식

- 자바로 디비 작업을 수행할 때는 반드시 jdbc드라이버가 build path에 추가되어야 함.

 

2. jdbc 프로그래밍을 위한 준비

1) 사용하려는 디비 드라이버

2) 사용할 디비의 ex) url: 192.168.0.200:1521:xe (1521은 포트 번호, xe는 디비 이름(sid))

3) 계정이 있어야함. 필요없는 경우도 있음 => access 나 sqllite

      

3. 작업 순서

1) 드라이버 class를 로드: 처음 한번만 수행

2) 디비 연결 - Connecrtion 클래스의 인스턴스를 생성

3) sql을 실행할 수 있는 인스턴스를 생성 - PreparedStatement 또는 CallableStatement를

    Connection을 이용해서 생성

4) sql을 실행 - Statement의 executeUpdate(select 이외의 작업) 또는 executeQuery(select) 메소드 호출

5) 결과를 사용

executeUpdate는 정수를 리턴: 정수는 영향받은 행의 개수

executeQuery는 ResultSet인스턴스를 리턴: select 구문의 결과

6) 사용한 인스턴스들의 close()호출

=> 자바에서 디비 관련된 작업은 예외처리를 강제함.

 

4. 디비 연결 작업

1) 어플리케이션 생성

 

2) jdbc드라이버 파일을 어플리케이션에 복사

 

3) 어플리케이션에 jdbc파일 복사후 build path 추가

 

Add to build Path

4) 드라이버 클래스 로드

Class.forName("드라이버 클랙스 이름");

-> 오라클은 oracle.jdbc.driver.OracleDriver - 대부분 복사해서 사용

 

5) 디비 접속

- 오라클의 이름: jdbc:oracle:thin:@ip:portnumber:sid

- 오라클에서 service 이름을 주면 :sid대신 /service이름

Connecttion 변수이름 = DriverManager.getConnection(String url, String userid, String password);

DB 연결 성공

 

*간혹 Mac에서 로케일을 인식할 수 없다고 뜨는 경우가 있는데

  [시스템 환경설정] -> [언어 및 지역] 에서 지역을 다른 곳으로 변경했다가 다시 대한민국으로 변경하면 접속됨.

지역 변경하기

 

6) sql실행

- PreparedStatement: 일반 sql을 실행하고자 하는 경우 생성

- CallableStatement: 프로시저 실행하고자 하는 경우 생성

 

7) PreparedStatement를 이용한 select 이외의 구문 실행

PreparedStatement 변수명 = Connection인스턴스.preparestatement(String sql);

int 결과 = 변수명.executeUpdate();

결과는 영향받은 행의 개수

insert의 경우 성공하면 1 이상의 숫자 리턴

update, delete의 경우 성공하면 0 이상의 숫자 리턴

update,delete의 경우 where절이 있기 때문에 구문은 정상수행 되었는데 조건에 맞는 데이터가 없어서

아무일도 하지 않는 경우가 발생할 수 있음.

- PreparedStatement 인스턴스를 생성할 때 sql을 완성하지 않고 ? 로 설정한 후 나중에 데이터 바인딩할 수 있음

- 사용하는 메소드는 set 자료형(?번호, 실제데이터)

- ?번호는 1부터 시작

PreparedStatement pstmt = con.prepareStatement(

"insert into item("num,name,manufacture,price,receivedate)"

+"values(?,?,?,?,?)");

- 숫자 데이터를 바인딩할 때는 setInt나 setDouble을 호출하고 문자열을 바인딩할 때는

setString 날짜는 setDate나 setTimestamp나 setTime 사용

 

'JAVA' 카테고리의 다른 글

CSV(Comma - Separated Values)  (0) 2020.05.22
Maven, JavaDoc, CheckStyle, JUnit  (0) 2020.05.22
팰린드롬(토마토,스위스,기러기) 확인하기  (0) 2020.05.08
10진수 정수를 2진수 10자리로 표현하기~  (0) 2020.05.08
Open API  (0) 2020.05.04