DB : Oracle 9i
JAVA : Sdk 1.5.0_06
1. 오라클 설치 후 환경 설정
시스템의 환경변수 설정 화면에서
---\Oracle\jre\1.3.1\bin;
---\Oracle\jre\1.1.8\bin;
을 삭제한다.
오라클 설치 시 인스톨 되는 jre 버젼과 우리가 자바를 설치했을 때 인스톨 한 jre 버젼이
맞지 않아서 생기는 문제를 없앤다.
2. JDBC로 DB에 접속하는 4가지 타입
① Type 1 : JDBC-ODBC Bridge Plus ODBC Driver
■ Bridge 방식은 현존하는 DB의 ODBC driver를 그대로 이용하여 JDBC access를 지원하는 module
■ ODBC는 각 database client에 install되어 있는 Native code를 사용
■ Failure Point 발생 가능성
② Type 2 : Native API
■ Native database client library를 이용하여 작성
■ Driver는 JDBC 호출을 번역하여 database client library의 API로 변경
■ Library는 DBMS provider에 의해 제공
■ 플랫폼에 독립적이지 못하므로 플랫폼에 맞는 곳에서만 사용가능
③ Type 3 : JDBC-Net
■ Client와 Server사이의 중간에서 통신을 수행
■ 중간 Server의 Protocol에 특정적으로 동작 해야 함. JDBC 메소드를 호출해서 DBMS에 독립적인 네트웍 프로토콜로 전환해 주는 드라이버
■ No native code model
■ DB를 바꾸더라도 Middleware만 교체해주면 된다.
■ 주로 규모가 큰 회사에서 사용 - Middleware가 필요하므로 비용이 많이 들어서.
④ Type 4 : Native Protocol
■ JDBC 호출을 DBMS에서 사용하는 Network protocol로 곧바로 번역 함
■ Client에서 Database로의 direct 호출이 가능
■ Best Performance
■ 사용하는 DBMS를 변경할 때는 유연하지 못함
■ 가장 많이 사용하는 방식.
3. Oracle에서 JDBC를 사용하기 위해서 해주어야 할 일
① 환경변수 - 클래스패스에 D:\Java\jdk1.5.0_06\lib\classes12.zip; 를 추가해주어야 한다.
classes12.jar 는 JSP에서 사용하고, zip은 자바 응용 프로그램에서 사용하므로 주의!!!
/*******************************************************************************************
* 파일 : Test.java
* 용도 : JDBC 시작
* 작성자 : 성홍제
* 작성일 : 2006. 07. 21
* Version : 1.0
*******************************************************************************************/
// ① 패키지 임포트
import java.sql.*;
public class Test
{
// Fields
// Constructor
// Methods
// Main
public static void main(String[] args)
{
Connection con = null; // DB가 연결될 때 그 정보를 받는다
Statement stmt = null; // SQL 명령어를 사용하기 위한 변수
ResultSet rs = null; // SQL 명령을 실행한 후, 그 결과를 받기 위한 변수
System.out.println("지금부터 시작합니다");
// ② 드라이버 로딩 - 드라이버 로딩에 실패할 경우에 대비하여 try-catch
try
{
Class.forName("oracle.jdbc.driver.OracleDriver"); // 글자 틀리지 말 것
System.out.println("오라클 드라이버 로딩 성공");
}
catch(Exception e)
{
System.out.println(e);
}
// thin: Type4 방식을 사용하여 접속
// 서버 IP, 1521: 포트 번호 - default: 1521
// ora92: DB 이름
String url = "jdbc:oracle:thin:@61.109.232.128:1521:ora92"; // 글자 틀리지 말 것
try
{
// ③ 오라클 데이터베이스 연결
con = DriverManager.getConnection(url, "scott", "tiger"); // 임시로 scott으로 접속
System.out.println("오라클 데이터베이스 연결 성공");
}
catch(Exception e)
{
System.out.println("오라클 데이터베이스 연결 실패");
}
try
{
// ④ Statement 객체 생성
stmt = con.createStatement();
// ⑤ SQL 구문 실행
// DB에서 실행할 뿐, 결과는 ResultSet으로 받는다.
rs = stmt.executeQuery("select * from emp");
// ⑥ ResultSet 결과 사용하기
while(rs.next()) // 다음 데이터가 없을 때 까지 무한루프
{
// rs의 결과중 1번째 것: empno. empno는 number이므로 getInt로 가져온다.
//String empno = rs.getInt(1);
int empno = rs.getInt("empno"); // rs의 결과중 컬럼 이름이 empno인 것.
// 마찬가지로 결과중 2번째 것: ename. varchar2이므로 getString으로 가져온다.
//String ename = rs.getString(2);
// 숫자로 몇 번째 것: 보다는 이렇게 컬럼명을 사용하는게 좋다.
String ename = rs.getString("ename");
System.out.print("empno: " + empno + "\t");
System.out.println("ename: " + ename);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally // 예외가 발생하든 안하든 반드시 자원을 반납해주어야 서버가 다운되지 않는다.
{
try
{
// ⑦ 자원 반납
stmt.close();
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("객체 반납");
}
}
}
'프로그래밍 > DB' 카테고리의 다른 글
[JDBC] 06 PL/SQL (0) | 2007.11.27 |
---|---|
[JDBC] 05 ResultSet (0) | 2007.11.27 |
[JDBC] 04 JDBC - Connection Pool... (0) | 2007.11.27 |
[JDBC] 03 3일째 (0) | 2007.11.27 |
[JDBC] 02 2일째 (0) | 2007.11.27 |