자... 오늘도 윈도우 XP 에서 jdbc 설정 때문에 하루를 날려 버린 불쌍한 영혼들에게 바친다...
글쓴이 또한 오라클 과 JDBC 설정 때문에 하루를 날려 버렸다.
오라클과 JDBC의 연동 드라이버설정은 두가지로 나눌 수 있다.
물론 2가지가 더 있는 것으로 안다.
하지만 나머지 2가지 방법은 지금 알아보는 방법보다 자주 사용되지 않으므로..
간단한? 두가지 방법만 알아보자.
다른 2가지 방법을 알고 싶다면 책이나 기타 검색을 통해서 알아보길 권장한다.
일단... JDBC 설정을 하는 상태라면 기본적으로 왠만한 클래스패스 설정 정도는 알고 있을 것이다.
그렇지 않은가? 그렇다면 일단 클래스 패스 설정하는 부분부터 공부하라..
==== 오라클 JDBC 패스 설정방법 ==========
JDBC 란 무엇인가? Java Database Connectivity 이다.
자바와 데이터베이스의 데이터들을 연결하기위한 API(응용프로그램인터페이스) 이다.
따라서 JDBC 를 이용하기 위해선 패스설정은 필수라 생각된다.
오라클을 깔았으리라 믿는다..;; 안깔았다면 창을 닫고 나중에 다시 참고하길 바란다 ㅡㅡ;;
자... 우선 본인의 CLASSPASS 를 보여주겠다. 똑같이 하라는 소리는 절대 아니다..
각자가 프로그램을 설치한 폴더가 다 다를테니.. 참고만 하란 뜻이다.
또한 지금 본인이 설정한 패스가 정답일리 없다.. 본인 또한 초보이기 때문에 ㅜㅜ;;
C:\j2sdk1.4.2_09\lib\tools.jar;C:\j2sdk1.4.2_09\classes;C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib\servlet-api.jar;C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib\jsp-api.jar;C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib\ojdbc14.jar;C:\j2sdk1.4.2_09\lib\ojdbc14.jar;
오라클 폴더로 가보자
C:\oracle\ora92\jdbc\lib
여기로 가보자... 오라클 밑에 오라92 밑에 jdbc 밑에 lib 폴더... 에 가보면 jdbc 용 파일들이 많이 있다.
본인은 jdk 1.4 버전을 깔았기 때문에 ojdbc14.jar 파일이 jdbc 파일이 된다.
현재 날짜 05.11.5 일 ... 오라클 9i 용 jdk 1.5 버전의 jdbc 파일은 안나온것 같다.
오라클 홈페이지에 없더라~ 10G 에는 지원되는지 모르겠다.
암튼... 저것이 jdk 1.4 용 JDBC 파일인데.. 여기에는 말들이 많다
C:\oracle\ora92\jdbc\lib 폴더에 보면 classes12.jar classes12.zip 파일도 있는데..
포스트나 지식인에서는 이 파일들도 jdbc 라고 한다.
본인은 정확한 테스트를 위해 오라클 폴더에 jdk1.4 용 JDBC파일이 있는줄도 모르고..
오라클홈페이지에 가서 직접 다운받았다 ㅡㅡ;;
암튼... 이제 드라이버 설정을 위한 JDBC가 어떤것인지 알았으니 패스 설정과 사용법에 관해서 알아야 할것이다.
일단 jsp 유저라면 톰캣이 저 jdbc 파일을 인식하도록 해야될것이다. '
일반 자바유저 또한 마찬가지~ 그래서 클래스 패스 설정은
C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib\ojdbc14.jar;
C:\j2sdk1.4.2_09\lib\ojdbc14.jar;
이와 같이 해준다.
물론 C:\oracle\ora92\jdbc\lib 폴더의 jdbc 드라이버를 위 해당 폴더에 ★복사★해야할 것이다.
자... 다 복사하였는가? 패스설정도 다 되었다면 이제 연동 방법에 대해서 알아보자.
=========== 1번 JDBC ODBC 를 이용한 연결. ==============
이방법은 JDBC 와 윈도우에서 제공하는 ODBC 를 이용하여 간편하게 연결하는 방법이다.
즉.. JDBC-ODBC Bridge Driver 를 이용하는 것이다.
2번 방법은 오라클 사에서 제공하는 thin 이라는 A native-protocol all-java 드라이버 를 이용하는 방법이다.
2번 방법이 DBMS 에서 제공하는 드라이버 이므로 ODBC 를 거쳐가는 것 보다 빠르다고 한다.
암튼...
1번 방법은 JDBC 클래스패스설정을 해줘야 하는지 잘은 모르겠다. 혹여나 궁금한 사람은
드라이버 클래스패스를 설정하지 않고 해보라~ 안되면 패스설정하고 다시하면 될것이다.
일단 2번 방법 모두 성공하려면 패스설정하는게 좋을 것이다.
제어판 -> 관리도구 -> 데이터 원본 (ODBC) 을 클릭한다.
위에 탭중에 시스템 DSN 탭이 보이는가? 두번째 탭이다.(잘 모르겠는 사람은 본인의 블로그 중에 그림으로 ODBC 설정방법을 설명한 스크랩 포스트가 있을 것이다 참고하시길...)
클릭~... 시스템데이터원본이라는 글자가 보일것이다.
여기서 추가를 누른다. 그럼 맨밑에 부분에 Oracle in Ora92home 라는 드라이버가 보일것이다.
선택후 마침 클릭~
DataSource Name : 자신이 작성한 데이터 원본을 구분하는 이름이다. 기억할수 있는 적당한 영어이름을 집어넣자. 기억할수 있는 것으로 하기바란다 ㅡㅡ;
Description : 생략~ 설명부분인데 안적어도 무방하다.
TNS Service Name: SID 기억하는가? 오라클 설치할때 전역변수 이름.. 그것이다. 입력~
User ID : 여기에는 자신이 데이터베이스를 생성한 ID가 들어가면 된다.
예제로 테스할 거라면 scott 을 이용해도 될것이다. 오라클 유저라면 scott/tiger 을 모르는 사람은 없을 것이다.
자.. 여기까지 입력했으면 옆에 Test Connection 을 눌러보자
그럼 창이 하나뜨고 비밀번호를 입력해야할것이다.
당연히 비밀번호는 tiger 이다. 비밀번호 입력후 OK 를 누르면
Connection Successful 이라는 메세지가 나오면 제대로 입력한것이다.
만약 안되었다면 위 글을 천천히 읽어보길 바란다. 아마도 전역변수 때문일것이다. 전역 변수 확인법은 검색을 통해 알아보도록하고.. 참고로 ora92 리스너 부분을 열어보면 전역변수가 나올것이다.
==============================================
자.. 여기까지가 JDBC 와 ODBC 연결방법이었다.
그런데 Microsoft ODBC for Oracle 이라는 ODBC 드라이버를 본 사람도 있을것이다.
이것으로 연결도 가능한데... 테스트가 없어서 제대로 연결되었는지 확인하기 어렵다.
방법은 똑같다.
시스템 DSN 에서 추가를 누르고
Microsoft ODBC for Oracle 를 선택하면
데이터 원본이름 : 구분가능한 영어로 적는다.
설명:
사용자이름: (ex : scott)
서버: SID (전역변수)
이렇게 4개의 란이 나오는데.. 아까 입력한것과 동일하다. 다만 데이터 원본이름은 겹치지 않게 해야한다.
예를 들어 Oracle in Ora92home 에서 DSN 를 test 라고 입력했다면
Microsoft ODBC for Oracle 에서는 test2 로 입력해야된다.
이하 설명은 생략하겠다. 간혹 두 드라이버간 차이점이 있다고하니.. 그건 알아서 찾아보도록하자.
=========================================================================
이제 테스트를 해봐야 하는데...
본인은 서버용으로 설치했기 때문에 JSP 파일로 테스트 하였다.
일반 자바 파일로 테스트하는법은 각자알아보도록 하고.. 혹여나... 서버설치도 안하고 JSP 파일을 돌려보는 사람이 있을까해서 하는 말인데..
절대 안돌아간다 ㅡㅡ;;
자바파일로 작성해서 테스트 해보도록...
<%@ page language="java" contentType="text/html;charset=euc-kr" import="java.sql.*,java.util.*"%>
<html><head>
<title>관리자 모드</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
</head>
<body bgcolor="#FFFFFF" background="images/notebook_bg_1.gif">
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:jun";
Connection dbCon=DriverManager.getConnection(url,"scott","tiger");
String sql="SELECT ename FROM emp";
Statement stmt=dbCon.createStatement();
ResultSet rs=stmt.executeQuery(sql);
%>
<center>오라클 ODBC 테스트 페이지<p>
<% while(rs.next()) { %>
<%= rs.getString("ename")%>
<p>
<% } rs.close();%>
<% dbCon.close(); %>
</center></p></body> </html>
위 파일을 보고 대충 짐작했겠지만 본인의 오라클 전역변수는 jun 이다. 중요한 부분만 본다면
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //JDBC 드라이버를 로딩한다.
String url="jdbc:odbc:jun";
Connection dbCon=DriverManager.getConnection(url,"scott","tiger");//로딩한 드라이버를 오라클과 연동한다.
여기서 고칠것이라면 자신의 오라클 전역변수.. jun 으로 되어있는부분만 바꾸면된다.
"sun.jdbc.odbc.JdbcOdbcDriver" 부분도 유심히 보자.
나중에 알아볼 JDBC 를 이용한 직접 연결에서는 이와는 다른방식으로 적어야 한다.
비슷해서 햇갈리는 경우가 있으니...
oracle.jdbc.driver.OracleDriver <- 틀리지 않은가? 위에것과는 ㅡㅡ;
나중에 url 또한 햇갈리게 되는데...
JDBC 를 직접 이용할 경우 jdbc:oracle:thin:@localhost:1521:jun 와 같이 jdbc:oracle 이다.
jdbc:odbc 가 아니란 말이다 햇갈리지 않도록 주의하길 바란다.
본인도 이것때문에 많이 해맸다. 여기저기서 소스파일 가져다 쓰다보니 소스가 뒤엉켜서 ㅡㅡ;;
암튼 중요한 것은 ODBC 와 JDBC 를 이용한 오라클 연동은 위 소스파일 처럼 하면 된다는 것이다.
이렇게 해서 페이지가 제대로 뜰경우... 당연히 scott 에 있는 emp 테이블에서 ename 컬럼에 있는 값을 불러오므로...
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
이런식으로 페이지가 뜰 것이다.
만약 에러메시지가 No suitable driver 가 뜰경우 ... 패스 설정이 잘못된 것이다. 클래스패스를 다시한번 확인하기 바란다.
ORA-00911: 문자가 부적합합니다
ORA-00911: ??????
이런식의 오류가 뜰경우 sql 문이 잘못된 것이다. 즉 오라클과 연동은 되었단 소리다.
sql 문에 잘못된 문자를 집어 넣었는지 체크하기 바란다.
오라클에서는 select * from emp; 이와같이 끝에 " ; " 세미콜론을 붙였지만 JSP 에서 sql 문을 넣어줄때는 세미콜론을 넣지 않는다.
이상하게 ODBC 를 이용해 작성할때는 에러가 발생하지 않는데 JDBC 만으로 연동할때는 100% 에러가 발생한다.
페이지가 제대로 뜨길빌며 ㅡㅡ;;
======================================================================
이제.. JDBC-ODBC 브릿지 드라이버를 이용한 연동은 끝났다..
본격적으로 오라클 사에서 제공하는 JDBC thin 드라이버를 이용한 연동에 대해서 알아보겠다.
ODBC 없이 thin드라이버 만을 이용해서 연동할 경우는 ODBC 처럼 데이터 원본을 이용하지 않아도 된다.
소스파일에 연동을 위한 문장만 잘 적어주면 되는데...
먼저 JSP 파일을 보도록하자.
<%@ page language="java" contentType="text/html;charset=euc-kr" import="java.sql.*,java.util.*"%>
<html><head><title>관리자 모드</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
</head><body bgcolor="#FFFFFF" background="images/notebook_bg_1.gif">
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:jun";
Connection dbCon=DriverManager.getConnection(url,"scott","tiger");
String sql="SELECT ename FROM emp";
Statement stmt=dbCon.createStatement();
ResultSet rs=stmt.executeQuery(sql);
%>
<center>JDBC 테스트 페이지 <P>
<% while(rs.next()) { %>
<%= rs.getString("ename")%><p>
<% } rs.close(); %>
<% dbCon.close(); %>
</p></body> </html>
중요 부분을 보면
Class.forName("oracle.jdbc.driver.OracleDriver"); //JDBC 드라이버 로딩
String url="jdbc:oracle:thin:@localhost:1521:jun";
Connection dbCon=DriverManager.getConnection(url,"scott","tiger");//로딩한 드라이버와 오라클 연동
자... 위에서 본 것과 유사하다. 하지만 확실히 다르다.. oracle.jdbc.driver.OracleDriver 부분이 확실히 다를것이다.
위에것과 비교하면서 보도록하자.
또..jdbc:oracle:thin:@localhost:1521:jun 도 다르다..
jdbc:oracle:thin@오라클 서버명 주소:1521:전역변수이름(sid),"user","ps")
이런형식으로 되어있음을 참고하자.
이것도 앞에 것과 비교해보면서 보도록하자.
오라클 연동하기 위한 방법중에 JDBC 드라이버는 크게 4가지로 나뉘는데 그중하나가 thin 드라이버이다. 좀전에 우리는 ODBC JDBC 브릿지 드라이브를 통해서 연동했다
지금한 것은 오라클사에서 제공하는 JDBC 드라이버 이다.따라서 ODBC 는 쓸일이 없다.
위 코드를 .jsp 파일로 저장해서 톰캣을 이용해 돌려보면
SMITH
ALLEN
WARD
JONES
와 같은 페이지가 보일 것이다.
자 페이지가 보이는가? 아니면 No suitable driver 나 ORA-00911: ?????? 가 보이는가?
만약 에러메시지가 No suitable driver 가 뜰경우 ... 패스 설정이 잘못된 것이다. 클래스패스 설정부분을 참고해서 클래스패스를 다시한번 확인하기 바란다.
ORA-00911: 문자가 부적합합니다
ORA-00911: ??????
라는 메세지는 sql 문이 잘못된 것이다 ODBC 브릿지 연결방법에서 언급한 해결 방법을 참고해서 수정하도록하자..
모두 성공하길 빌며.... 본인은 이제 밥먹으로 간다 ㅠㅠ 화이삼!!
'Study > JSP' 카테고리의 다른 글
| 풀옵션 홈페이지... 명인 (0) | 2010/01/29 |
|---|---|
| jsp 오라클 연동 (0) | 2009/12/26 |
| 오라클 ODBC JDBC 설정 설치 (0) | 2009/12/26 |
| JSP로 간단한 게시판 만들기(DB이용) 소스 (0) | 2009/12/26 |
| JSP 리플 게시판 - DB 오라클 (0) | 2009/12/26 |
| [JAVA] 메일발송 JAVA (0) | 2009/12/26 |


