- 들어가기 전에
java 언어를 사용해서 DBMS로 부터 정보를 조회하는 방법인 JDBC에 대해 알아보도록 하자.
- 학습 목표
1. JDBC가 무엇인지 이해한다.
- 핵심 개념
- JDBC
- DriverManager
- Connection
- Statement
- ResultSet
- JDBC 개요
- JDBC(Java Database Connectivity)의 정의
· 자바를 이용한 데이터베이스 접속과 SQL 문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약
· 자바 프로그램 내에서 SQL 문을 실행하기 위한 자바 API
· SQL과 프로그래밍 언어의 통합 접근 중 한 형태
- JAVA는 표준 인터페이스인 JDBC API를 제공
- 데이터베이스 벤더, 또는 기타 써드파티에서는 JDBC 인터페이스를 구현한 드라이버(driver)를 제공한다.
- JDBC 환경 구성
- JDK 설치
- JDBC 드라이버 설치
· Maven에 다음과 같은 의존성을 추가한다. MySQL 사이트에서 다운로드한다.
- JDBC를 이용한 프로그래밍 방법
- import java.sql.*;
- 드라이버를 로드한다.
- Connection 객체를 생성한다.
- Statement 객체를 생성 및 질의 수행
- SQL문에 결과물이 있다면 ResultSet 객체를 생성한다.
- 모든 객체를 닫는다.
- JDBC 클래스의 생성 관계
- JDBC 단계별 사용
1. IMPORT
import java.sql.*; | cs |
2. 드라이버 로드
Class.forName( "com.mysql.jdbc.Driver" ); | cs |
3. Connection 얻기
String dburl = "jdbc:mysql://localhost/dbName"; Connection con = DriverManager.getConnection ( dburl, ID, PWD ); | cs |
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; } | cs |
4. Statement 생성
Statement stmt = con.createStatement(); | cs |
5. 질의 수행
ResultSet rs = stmt.executeQuery("select no from user" ); 참고 stmt.execute(“query”); //any SQL stmt.executeQuery(“query”); //SELECT stmt.executeUpdate(“query”); //INSERT, UPDATE, DELETE | cs |
6. ResultSet으로 결과 받기
ResultSet rs = stmt.executeQuery( "select no from user" ); while ( rs.next() ) System.out.println( rs.getInt( "no") ); | cs |
7. Close
rs.close(); stmt.close(); con.close(); | cs |
- 소스코드 예제
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; } | cs |
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; } | cs |
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();} } } | cs |
'Progamming > BoostCourse' 카테고리의 다른 글
Web API란? (0) | 2019.01.22 |
---|---|
Rest API란? (0) | 2019.01.22 |
Maven이란? (0) | 2019.01.22 |
DDL(create, alter, drop) (0) | 2019.01.22 |
DML(select, insert, update, delete) (0) | 2019.01.22 |
댓글