-
Oracle JDBC 사용 방법servlet/JDBC 2022. 2. 3. 22:30반응형
JDBC 란?
JDBC(Java DataBase Connectivity)란 자바에서 데이터베이스에 접근할 수 있게 해주는 Programming API 이다.
Oracle JDBC
오라클 JDBC 라이브러리 ojdbc8 다운
https://www.oracle.com/database/technologies/appdev/jdbc-ucp-18-15-downloads.html
Charactoer Set 설정
문자 인코딩 방식이 맞지 않으면 해당 문자가 제대로 출력되지 않으므로 이클립스 작업 파일에 대한 문자셋을 UTF-8로 일치시켜야 한다. 따라서 다음과 같이 Window->Preferences에서 다음과 같은 설정을 해준다.
- 기본 문자 인코딩
JDBC 사용 클래스
- DriverManger
- 데이터 원본에 JDBC 드라이버를 통하여 커넥션을 만드는 역할
- Class.forName() 메서드를 통해 생성되며 반드시 예외처리를 해야 함
- 직접 인스턴스 생성이 불가능하고 getConnection() 메서드를 사용하여 인스턴스 생성 가능
Class.forName("oracle.jdbc.driver.OracleDriver");
- Connection
- 특정 데이터 원본과 연결된 커넥션을 나타내며 Statement 인스턴스를 생성할 때도
Connection 인스턴스를 사용하여 createStatement() 메서드를 호출하여 생성
- SQL 문장을 실행시키기 전에 우선 Connection 인스턴스가 있어야 된다.
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "아이디", "비밀번호");
- Statement
- Connection 클래스의 createStatement() 메서드를 호출하여 얻을 수 있다.
- 생성된 Statement 인스턴스로 SQL 질의문을 String에 담아 인자로 전달하여
executeQuery() 메서드를 호출하여 SQL 질의 수행
String query = "SELECT ID, LAST_NAME FROM EMP"; stmt = conn.createStatement(); rset = stmt.executeQuery(query);
- PreparedStatement
- Connection 클래스의 preparedStatement() 메서드를 사용하여 인스턴스 생성
- SQL 질의문을 위치홀더(placeholder)인 ?로 표현되는 String으로 정의
- PreparedStatement는 위치홀더에 해당되는 인수가 많아서
특정 값만 바꾸어 여러 번 실행해야 할 때 사용하면 유용함
- Statement는 SQL 문장을 매번 컴파일 하지만 PreparedStatement는
한 번만 컴파일하므로 실행 속도가 빠름
String query = "INSERT INTO MEMBER VALUES(?,?)"; pstmt = conn.preparedStatement(query); pstmt.setString(1, id); pstmt.setString(2, password);
- ResultSet
- SELECT문을 사요한 질의 성공 시 ResultSet을 반환
- SQL 질의문에 의해 생성된 테이블을 담고 있으며 커서(cursor)로 특정 행에 대한 참조 조작
String id = rset.getString("ID"); String pwd = rset.getString(2);
JDBC 코딩 절차
- DriverManager에 해당 DBMS Driver 등록
- 해당 Driver로부터 Connection instance 획득
- 해당 Driver로부터 Connection instance 획득
- Statement에서 제공하는 메서드를 사용하여 SQL문 실행
- Statement에서 제공하는 메소드를 사용하여 SQL문 실행
참고
properties 파일을 이용한 연결 정보 관리jdbc-config.properties 파일 생성 경로 : config/
driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@localhost:1521:xe user=아이디 password=비밀번호
properties 파일에서 연결 정보를 가져와 JDBC 연결
Properties prop = new Properties(); Connection conn = null; try { prop.load(new FileReader("config/jdbc-config.properties")); String driver = prop.getProperty("driver"); String url = prop.getProperty("url"); String user = prop.getProperty("user"); String password = prop.getProperty("password"); /* 사용할 드라이버 등록 */ Class.forName(driver); /* DriverManager를 이용해 Connection 생성 */ conn = DriverManager.getConnection(url, user, password); System.out.println(conn); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if(conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }
반응형'servlet > JDBC' 카테고리의 다른 글
JDBC - PreparedStatement 사용 (0) 2022.02.04 JDBC - Statement 사용 (0) 2022.02.03 JDBC 10 - 최종 결과물 (0) 2021.12.03 JDBC 9 - 사용자 인터페이스 붙이기(공지사항 목록) (0) 2021.12.02 JDBC 7 - CRUD를 담당하는 NoticeService 생성 (0) 2021.11.30