JDBC(Java Database Connectivity)
= 자바를 이용한 데이터베이스 접속과 SQL 문자으이 실행, 그리고 실행결과 얻어진 데이터의 handling을 제공하는 방법과 절차에 대한 규약
= 자바 프로그램 내에서 SQL 문을 실행하기 위한 자바API
● JDBC API는 표준으로 정해졌기 때문에 DBMS에 무관하게 프로그램을 작성할 수 있다. 그러나 JBDC API는 표준적인 API만 제공할 뿐, 실질적으로 작업을 수행하는 부분은 JDBC 드라이버이다.
● 구성 :
= 자바로 작성되어진 클래스와 인터페이스
= Package : java.sql
● import java.sql.*; 필요.
● 목적 :
= Tool / Database 개발자들을 위한 표준 API를 제공하고 pure 자바 API를 이용하여 데이터베이스 Application을 작성할 수 있게 함.
● 특징 :
= java.sql 패키지 안에는 클래스(Class)보다 인터페이스(Interface)가 많이 존재한다.
미완성 상태의 인터페이스는 내부에 추상 메소드만 가지고 있다. 이를 상속받은(Implements) 클래스가 인터페이스 안에 추상 메소드를 선택적으로 오버라이딩을 통해서 구체화하여 실행시킬 수 있게 된다.
- Interface A {
public abstract void go(); // public abstract 는 인터페이스의 기본 설정이다.
} - Class B inplements A {
public void go(){ ~~~~~}
}
● 기능
= 데이터베이스와 연결(네트워크 연결? 원격접속)
= SQL문 전송
= 결과 처리
● JDBC를 이용하기 위해서는, DBMS 제조사에서 제공하는 JDBC용 드라이버를 설치해야 한다.
JDBC용 드라이버 다운로드 경로 : http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
● SQL 과 관련된 내용은 다음 페이지를 참조하세요. ^^
http://sunfuture.springnote.com/pages/3180626
● JDBC 작성 순서
# 실습예제 : JdbcOracle.java JdbcOracle.java (코드보기)
[1]. JDBC Driver 등록 - JDBC Driver Manager : 어떤 DBMS를 사용하게 될 것인지를 알려주는 작업
D:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar 파일을 복사해서
= 오라클이 설치된 폴더에서 JDBC에 쓰일 수 있는 JDBC 드라이버들이 jar(자바 압축방식)
= 관련내용 : 위키백과 - http://en.wikipedia.org/wiki/JAR_(file_format)
= Sun 홈페이지 설명 : http://java.sun.com/javase/6/docs/technotes/guides/jar/jarGuide.html
Drive:\Program Files\Java\jdk1.6.0_13\jre\lib\ext 에 붙여넣기 하면 된다.
- ext 폴더는 자바 실행기에서 기본으로 검색하는 곳이다.
[2]. JDBC 드라이버를 로드한다.
- Class.forName("oracle.jdbc.driver.OracleDrver");
[3]. DBMS에 커넥션(Connection : 네트워크 연결)을 연다.
※ Dirver Manager의 getConnection()을 이용 - Connection 객체 얻어오기.
- Connection conn = DriverManager.getConnection( JDBC_URL, db_user, db_passwd);
[4]. SQL을 전송한다.
4.1. Connection 객체의 createStatement()을 이용해서 Statement 객체 얻어내기
- Statement stat = conn.createStatement();
4.2. ResultSet 객체의 executeQuery()나 executeUpdate()를 이용해서 SQL문을 DB에 전송(날려~, 보내)
ResultSet rs = stat.executeQuery( SQL -
● 사용 SQL이 Select인 경우 : executeQuery()(타입 : ResultSet) 을 실행하면 ResultSet 객체의 getXXXX() 로 받아주어야 한다.
● 사용 SQL이 Select 아닌 경우 : executeUpdate()(타입 : integer) 는 ResultSet 객체를 생성하지 않는다.
[5]. 결과를 처리한다.
참조 API : http://java.sun.com/javase/6/docs/api/index.html
ResultSet(인터페이스, 소스 : ResultSet.java ) 객체의 getXXXX() 를 이용해서 SQL 문장의 실행결과 얻어내기. (※ XXXX는 Select 하는 컬럼의 속성값에 따라 변경된다).
- STRING query = "select name, phone from friends";
ResultSet rs = stmt.executeQuery(query);
while ( rs.next() ){
String name = rs.getString(1);
String phone = rs.getString(2);
System.out.println(name + " | " | phone);
}
컬럼의 순서를 모를 때에는 getXXXX(" "); 를 하면 된다. 접근속도에 영향을 받을 때에는 Index를 사용한다.
rs.absolute(Index); index 숫자의 행으로 이동한다.
rs.first(); ResultSet 객체의 처음 행으로 이동한다.
rs.last(); ResultSet 객체의 마지막 행으로 이동한다.
※ getXXXX() 메소드 사용시, DB에 저장된 컬럼의 속성에 맞추어서 getInt(), getDouble(), getString() 등으로 맞춰주어야 한다.
[6]. 커넥션을 닫는다.
- rs.close();
- stmt.close();
- con.close();
이 글은 스프링노트에서 작성되었습니다.
'Java > Language' 카테고리의 다른 글
Java에서 인스턴스(객체)를 만드는 다양항 방법 (0) | 2009.05.14 |
---|---|
JDBC 연결시 에러 발생하는 경우. (0) | 2009.05.12 |
제네릭 프로그래밍(Generic Programming) (1) | 2009.05.11 |
JDK 1.6 한글버전 (0) | 2009.05.11 |
자바의 클래스(Class)를 설명해보자. (0) | 2009.05.11 |