[JDBC] 정리ing...

Beom J·2021년 5월 27일
0

Java

목록 보기
2/8

JDBC 정리

수업 27일~31일차!
어느덧 DB 공부를 시작하고, 배웠던 간단한 SQL 문들을 JAVA와 연결해 사용하는 JDBC도 배우기 시작했다.
나는 항상 뭐랑 뭐 같이 연결할때 머리가 아프더라..^^... SQL 만 배울땐 '할만하네!' 했던 나레기 반성해...

JDBC란?

JBDC란, java 에서 DB 정보를 받아와 프로그래밍 하기 위해 사용되는 API 이다.
인터페이스로 구성되어있어서 사용자의 DB 종류에 구애받지 않고 사용가능하다.

JDBC 기본 코드

1. JDBC 드라이버 로드

  • Class.forName ("*사용할 JDBC 드라이버 이름*");
    : 객체화 시켜서 드라이버(jar)를 로딩하는 역할
    : MariaDB - "org.mariadb.jdbc.Driver"
    : Oracle - "oracle.jdbc.driver.OracleDriver"

2. DB 연결

  • Connection conn = null;
  • conn = DriverManager.getConnection(url,user,password);
    - DriverManager.getConnection() :
    실제 자바 프로그램과 데이터베이스를 네트워크상에서 연결해주는 메소드
    연결에 성공하면 DB와 연결된 상태를 Connection 객체로 표현하여 반환
    - String url : 접속할 서버의 URL이며, 프로토콜, 서버주소,서버포트, DB이름으로 구성
    ( MariaDB 의 url 은 jdbc:mysql://localhost:3306/"사용할 데이터베이스 명" )
    - String user : DB서버에 로그인할 계정
    - String password : DB서버에 로그인할 비밀번호

위의 변수 3대장에 정보를 넣어 인자로 전달! 데이터 베이스에 연결!

3. DB 에 데이터를 읽기 / 쓰기 (SQL문)

1) Statement 를 이용한 쿼리 실행
위에서 Connection으로 만든 자바 & DB 연결을 통해서 자바 -> DB 쪽으로 SQL 문을 전송!
DB는 처리 결과를 다시 자바 쪽으로 전달!
바로 이 역할을 하는 객체가 Statement 이다. ( JAVA -> DB & DB -> JAVA )

	Statement stmt = null;
	//Statement 객체를 생성하려면 Connection 객체가 제공하는 createStatement( ) 메소드를 사용
	stmt = conn.createStatement();

2) PreparedStatement 를 이용한 쿼리 실행

4. SQL 문 실행

1) ResultSet
executeQuery( ) 메소드에서 실행된 select 문의 결과값을 가지고 있는 객체

    ResultSet rs = null;
    rs = stmt.executeQuery("실행 할 SQL 문")

ResultSet은 Cursor(커서) 라는 개념을 가지고 있는데,
현재 실행되는 테이블의 '위치'를 나타내는 개념이다.
그 중 rs.next() 라는 메소드는 :

  • 커서 다음에 레코드가 있는지 판단하여 없으면 false, 있으면 true를 반환
  • 커서를 다음 레코드로 이동

ResultSet 의 getter 메소드도 중요한데,
현재 이동한 커서의 '컬럼 값'을 데이터 타입에 따라 추출하는 getter 메소드들이다.
컬럼의 이름이나 인덱스 값으로 불러온다.

  • getString(int columnInde);
  • getString(String columnLabel);

5. DB 연결 종료

DB 처리 작업을 하면서 사용한 객체들을 닫아주기.

  • Connection - DB 연결 객체
  • Statemet / PreparedStatement 객체 - SQL 문 실행 객체
  • ResultSet 객체 - select 문 결과를 가지는 객체
    DB 처리가 끝나고 나면 사용했던 객체들을 메모리에서 해제해주어야 함.
    해제하는 순서는 최근에 사용했던 객체부터 거꾸로 올라가며 해제.

rs.close( )
stmt.close( ) / pstmt.close( )
conn.close( )

profile
네..? 개발자요...? 아....직 일걸요...?

0개의 댓글