달력

2

« 2025/2 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
2017. 7. 2. 21:34

java 자바 JDBC C. Java2017. 7. 2. 21:34

JDBC를 이용해 DB(여기서는 oracleDB)를 연결하는 방법은 2가지가 있다.

=============================================================================
1.  JDBC를 이용해서 바로 oracleDB에 연결하는 방법

2.  JDBCㅡODBC연결을 통해 ORACLE 연결하는 방법 
    (ps. ODBC는 oracle,mssql....서로 다른 데이터베이스를 통해 구축된 데이터를 윈도우 환경에서

     사용할수 있도록 ms사에서 제안한 데이타베이스를 공유하는 방식) 
=============================================================================


1번 방법

◈ 오라클 드라이버와 저장위치 정리

                            classes12.zip    classes12.jar   ojdbc14.zip(9i용) ojdbc14.jar(9i용)
 
jdkx.x/jre/lib/ext             O                     O                       O                     O 

tomcatx.x/common/lib     X                      O                       X                     O

◈ 결론
1. classes12, ojdbc14 모두 oracle 8 지원
2. 톰캣은 .zip 못 읽음
3. 두개의 폴더 중 (jdkx.x/jre/lib/ext, tomcatx.x/common/lib) 어느 곳에나 넣어도 됨

=========================================================================================
classes12.zip, classes12.jar 이 둘의 차이점이 있다.
만약 오라클 10g 버전을 설치하면 classes12.zip을
java 설치폴더\jre\lib\ext 밑에 넣어주면 문제 없이 오라클과 연결이 될 것이다.

하지만 자신의 컴에 오라클이 설치되어 있지 않는데 위의 절차대로
classes12.zip파일만 넣어주면 연결은 되지 않을 것이다.
패스를 설정해도 않될 것이다.
Tomcat은 zip파일을 읽지 못한다. 이점은 참고로 알고 있어야 한다.

그렇다면 오라클이 설치 않되었다면 오라클 연동은 어떤 식으로 할까?
classes12.jar를 이용하면 됩니다.
Tomcat 설치 폴더\webapp\ROOT\WEB-INF\lib와
Tomcat 설치 폴더\lib에 넣어주면 된다. (Tomcat 6버전을 예로 들었다.)

정리를 하면 zip,jar 둘다 오라클 연동 드라이버는 맞다.
하지만 오라클이 깔려있냐, 않깔려 있냐에 따라 다른 방법으로 연동을 시켜줘야 한다.

 

[ JDBC 드라이버를 이용해 Oracle DB에 연결하여 테이블생성하고 데이터 가져오기.

JDBC : Java Database Connectivity (자바프로그램과 DB를 연결해주는 인터페이스)

 

선행작업 :

1. 오라클연결을 위해 classes12.zip 파일이 필요함.

2. 이 파일은 오라클 DB를 설치하면 oracle\product\10.2.0\db_1\jdbc\lib 있음.

3. JDK가 설치된 디렉토리 jdk\jre\lib\ext에 classes12.zip 파일을 복사한다.

4. 환경변수등록 - java_home=C:\Work\jdk;  path=C:\Work\jdk\bin; CLASSPATH=.; 
   (
환경변수는 좀 다를수 있음)

5. 실행 시 대표적인 에러는 다음과 같다. (이 외에도 여러가지 에러가 발생될 수 있음)

 - classes12.zip 파일을 찾지 못한경우

 java.lang.ClassNotFoundException: oracle.jdbc.driver.oracleDriver

 - 이런경우는 해당 경로에 classes12.zip 파일이 없거나 Path가 잘못잡힌 경우가 대부분이다.

 

[소스코드]--------------------------------------------------------------------------

package testPackage;

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

 

public class OracleTest {

 

    public static void main(String args[]) throws SQLException, ClassNotFoundException {


        Connection conn = null;

        Statement stmt  = null;
        ResultSet  rs      = null;

        String sQuery = "";
       
       try {
   
           Class.forName("oracle.jdbc.driver.OracleDriver");  //드라이버연결
           conn = DriverManager.getConnection ("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger");  
//IP DB명, User, Pw
   
            stmt = conn.createStatement();

 

            -----Table이 없는경우  생성 -----------------------------------------------------

 

            sQuery = "select count(*) as cnt from tab where tname = 'TESTTABLE'";
            rs = stmt.executeQuery(sQuery);

 

            int cnt=0;

            while(rs.next()){
                cnt = rs.getInt("cnt");
                System.out.println(">> "+rs.getInt("cnt"));
            }

 

            //테이블생성

            if(cnt < 1){

                sQuery = "Create table TestTable(id number, name varchar(20), age number) ";
                stmt.executeUpdate(sQuery);  
            }

           

            //데이터입력
            PreparedStatement pstmt = conn.prepareStatement("Insert into TestTable values (?,?,?)");
            pstmt.setInt(1, 1);
            pstmt.setString(2, "홍길동");
            pstmt.setInt(3, 31);
            pstmt.execute();

            -------------------------------------------------------------------------           
           

            //입력한 데이터 조회
            sQuery = "select id, name from javateat order by 1";
            rs = stmt.executeQuery(sQuery);

           

            //Query한 데이터 꺼내기

            while(rs.next()) {
                String  id  = rs.getString("ID");
                String  nm     = rs.getString("NAME");
                System.out.println(id + " " + nm);
            }

 

        } catch (Exception e ) {
            e.printStackTrace();
        }finally{
            stat.close(); //명령문종료

            pstmt.close(); //명령문종료
            conn.close();  //DB연결종료
        }

    }
}

 

[핵심포인트]-----------------------------------------------------------------------

- JDBC연결 포인트 : 드라이버를 연결. DB 접속.  conn객체로 Statement객체 생성.

1. 드라이버 연결
Class.forName("oracle.jdbc.driver.OracleDriver");

2. IP DB명,User,Pw

conn = DriverManager.getConnection ("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger");  

3. Statement 객체생성
stat = conn.createStatement();


4. PreparedStatement 객체생성
PreparedStatement pstmt = conn.prepareStatement("Insert into TestTable values (?,?,?)");
 

 

 


'C. Java' 카테고리의 다른 글

JVM (java virtual machine) 구조  (0) 2017.07.02
java 자바 객체생성  (0) 2017.07.02
java 자바 생성자 this  (0) 2017.07.02
java 자바 바인딩 개념  (0) 2017.07.02
java 자바 배열  (0) 2017.07.02
:
Posted by sfeg