본문 바로가기
개발이야기/웹_백엔드

6) JDBC란?

by 효우너 2020. 7. 23.
728x90
반응형

* 이 글은 부스트코스 웹 백엔드 강의 수강 바탕으로 작성되었습니다.

1. JDBC 개요

  • JDBC(Java Database Connectivity)의 정의
    - 자바를 이용한 데이터베이스 접속과 SQL 문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약
    - 자바 프로그램 내에서 SQL문을 실행하기 위한 자바 API
    - SQL과 프로그래밍 언어의 통합 접근 중 한 형태
  • JAVA는 표준 인터페이스인 JDBC API를 제공
  • 데이터베이스 벤더, 또는 기타 써드파티에서는 JDBC 인터페이스를 구현한 드라이버(driver)를 제공한다.

 

2. JDBC 환경 구성

  • JDK 설치
  • JDBC 드라이버 설치
    - Maven에 다음과 같은 의존성을 추가한다. MySQL사이트에서 다운로드 한다.
<dependency> 
<groupId>mysql</groupId> 
<artifactId>mysql-connector-java</artifactId> 
<version>5.1.45</version> 
</dependency>

 

3. JDBC를 이용한 프로그래밍 방법

  1. import java.sql.*;
  2. 드라이버를 로드 한다.
  3. Connection 객체를 생성한다.
  4. Statement 객체를 생성 및 질의 수행
  5. SQL문에 결과물이 있다면 ResultSet 객체를 생성한다.
  6. 모든 객체를 닫는다.

 

4. JDBC 클래스의 생성 관계

 

5. JDBC 사용 - 단계별 설명

1. IMPORT

import java.sql.*;

 

2. 드라이버 로드

Class.forName( "com.mysql.jdbc.Driver" );

 

3. Connection 얻기

String dburl = "jdbc:mysql://localhost/dbName"; 
Connection con = DriverManager.getConnection ( dburl, ID, PWD );

 

소스코드 예제

public static Connection getConnection() throws Exception{ 
String url = "jdbc:oracle:thin:@117.16.46.111:1521:xe"; 
String user = "smu"; String password = "smu"; 
Connection conn = null; 
Class.forName("oracle.jdbc.driver.OracleDriver"); 
conn = DriverManager.getConnection(url, user, password); 
return conn; 
}

 

4. Statement 생성

Statement stmt = con.createStatement();

 

5. 질의 수행

ResultSet rs = stmt.executeQuery("select no from user" ); 
stmt.execute(“query”); //any SQL 
stmt.executeQuery(“query”); //SELECT 
stmt.executeUpdate(“query”); //INSERT, UPDATE, DELETE

 

6. ResultSet으로 결과 받기

ResultSet rs = stmt.executeQuery( "select no from user" ); 
while ( rs.next() ) 
System.out.println( rs.getInt( "no") );

 

7. Close

rs.close(); stmt.close(); con.close();

 

소스코드 예제

public List<GuestBookVO> getGuestBookList(){ 

List<GuestBookVO> list = new ArrayList<>(); 
GuestBookVO vo = null; 
Connection conn = null; 
PreparedStatement ps = null; 
ResultSet rs = null; 

try{ 
conn = DBUtil.getConnection(); 
String sql = "select * from guestbook"; 
ps = conn.prepareStatement(sql); 
rs = ps.executeQuery(); 
while(rs.next()){ 
vo = new GuestBookVO(); 
vo.setNo(rs.getInt(1)); 
vo.setId(rs.getString(2)); 
vo.setTitle(rs.getString(3)); 
vo.setConetnt(rs.getString(4)); 
vo.setRegDate(rs.getString(5)); 
list.add(vo); 
} 
}catch(Exception e){
e.printStackTrace(); 
}finally { 
DBUtil.close(conn, ps, rs); 
} 
return list; }

 

소스코드 예제

public int addGuestBook(GuestBookVO vo){ 
int result = 0; 
Connection conn = null; 
PreparedStatement ps = null; 
try{ 
conn = DBUtil.getConnection(); 
String sql = "insert into guestbook values(" + "guestbook_seq.nextval,?,?,?,sysdate)"; 
ps = conn.prepareStatement(sql); 
ps.setString(1, vo.getId()); 
ps.setString(2, vo.getTitle());
ps.setString(3, vo.getConetnt()); 
result = ps.executeUpdate(); 
}
catch(Exception e){ 
e.printStackTrace(); 
}finally { 
DBUtil.close(conn, ps); 
} 
return result; }

 

소스코드 예제

public static void close(Connection conn, PreparedStatement ps){ 
if (ps != null) {
try { ps.close(); 
	} catch (SQLException e) {
e.printStackTrace(); } 
	} 
if (conn != null) { 
try { conn.close(); 
	} catch (SQLException e) {
e.printStackTrace();} 
  } 
}
728x90
반응형

댓글