JDBC 개요 - 정의
- JDBC(Java Database Connectivity)의 정의
- 자바를 이용한 데이터베이스 접속과 SQL 문장의 실행, 그리고 실행 결과
로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약 - 자바 프로그램내에서 SQL문을 실행하기 위한 자바 API
- SQL과 프로그래밍 언어의 통합 접근 중 한 형태
- 자바를 이용한 데이터베이스 접속과 SQL 문장의 실행, 그리고 실행 결과
- 개발자를 위한 표준 인터페이스인 JDBC API와 데이터베이스 벤더,
또는 기타 써드파티에서 제공하는 드라이버(driver)
JDBC 개요 - 환경 구성
- JDK 설치
- JDBC 드라이버 설치
- 오라클 JDBC 드라이버를 다운로드 받는다
- http://dev.mysql.com/downloads/connector/j/#downloads
- mysql-connector-java-5.1.22-bin.jar
- JDBC 드라이버를 %JAVA_HOME%\jre\lib\ext 에 복사
혹은 CLASSPATH에 추가
JDBC 개요 - 참고
- Java API Reference
- JDBC Tutorial
JDBC 사용 – 단계별 정리
- JDBC를 이용한 데이터베이스 연결 방법
- 단계 : import java.sql.*;
- 단계 : 드라이버를 로드 한다.
- 단계 : Connection 객체를 생성한다.
- 단계 : Statement 객체를 생성 및 질의 수행
- 단계 : SQL문에 결과물이 있다면 ResultSet 객체를 생성한다.
- 단계 : 모든 객체를 닫는다.
JDBC 사용 – 단계별 설명 1
IMPORT
import java.sql.*;
드라이버 로드
Class.forName( "oracle.jdbc.driver.OracleDriver" );
Connection 얻기
String dburl = "jdbc:oracle:thin:@localhost:1521:xe";
Connection con = DriverManager.getConnection ( dburl, ID, PWD );
JDBC 사용 – 단계별 설명 2
Statement 생성
Statement stmt = con.createStatement();
질의 수행
ResultSet rs = stmt.executeQuery("select no from user" );
참고
stmt.execute(“query”); //any SQL
stmt.executeQuery(“query”); // SELECT
stmt.executeUpdate(“query”); // INSERT,UPDATA,DELETE
JDBC 사용 – 질의수행 예
executeQuery(String sql) – select
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(“SELECT * FROM emp”);
executeUpdate(String sql) –insert, update, delete
Statement stmt = con.createStatement();
int updateCount = stmt.executeUpdate(“INSERT INTO test VALUES (1)”);
execute(String sql) – 기 타 SQL문
Statement stmt = con.createStatement();
if(stmt.execute(sql)){
ResultSet rs = stmt.getResultSet();
...
}else{
int rowCount = stmt.getUpdateCount();
...
}
JDBC 사용 – 단계별 설명 3
- ResultSet으로 결과 받기JDBC 사용 – RecordSet
ResultSet rs = stmt.executeQuery( "select no from user" ); while ( rs.next() ) System.out.println( rs.getInt( "no") ); Close rs.close(); stmt.close(); con.close();
JDBC 사용 – RecordSet
- SQL문에 대한 결과 를 얻는다.
- 이동함수: next, previous, first, last, beforeFirst, afterLast, relative, absolute
- 기본: TYPE_FORWARD_ONLY & CONCUR_READ_ONLY (= next로만 이동 가능 & Read Only)
- 값 추출 함수: getXXX(숫자/이름) 데이터 타입에 따라 알맞게
JDBC 사용 – 주의:
- 에러시 해결방법
- 에러 메시지를 확인하자
- 대소문자가 틀렸나? (클래스 이름이나 파일 이름)
- JDBC는 제대로 찾고 있나?
- CLASSPATH나 PATH는 설정이 잘 되어 있나?
- MySQL은 제대로 켜져 있는가?
- mysql로 접근이 가능한가?
- DB Name나 user name 패쓰워드는 올바른가?
Statement 활용 - 상속관계
- Statement를 상속받아서 각 클래스가 정의되어 있음
자식 클래스는 부모 클래스의 기능 + alpha
Statement 활용 - PreparedStatement
- 수행방법
- SQL 미리 준비 : 파싱, 실행 계획 저장
- 실시간에 Parameter 바인딩
- 바인딩
- 바인딩변수: ?
- setXXX 함수: 숫자 1부터
- 장점
- 효율성
- 보안 (SQL Injection)
… String sql = "SELECT no FROM user WHERE no = ?"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, 10); ResultSet rs = pstmt.executeQuery(); …
'Dev > Java' 카테고리의 다른 글
JDBC 처음부터 끝까지 사용해 보기(proj-Bookmall)-2 (0) | 2021.10.07 |
---|---|
JDBC 처음부터 끝까지 사용해 보기(proj-Bookmall)-1 (1) | 2021.10.05 |
JDBC (Programming) 실습 (0) | 2021.10.05 |
객체 지향 프로그래밍이 뭘까? (0) | 2021.09.07 |
Java 입문 개발(환경 변수) 설정 tip.이클립스 설정 (0) | 2021.09.06 |