본문 바로가기
웹프로그램

JSP DB 연결하기

by 세이박스 2009. 6. 9.
반응형

db 를 연결하기 위해서는 약간의 자바 문법의 습득이 필요합니다.
그래서 약간의 java내용(db연결할 정도) 의 내용을 설명하겠습니다.
db를 연결하기 위해서는 약간의 클래스의 package(클래스들의 모임 , 클래스란 작은 모듈단위의 프로그램)를 import를 시켜야 합니다.
import javax.servlet.*;         ==>javax.servlet의 모든(*)클래스를 사용할 준비가 됐다.. 라구 선언하는 것
import java.io.IOException;     ==>java.io.IOException 의 클래스 하나를 사용할 준비가 됐다 라구 선언하는 것

c 에서 말하는 include입니다.
그런데 jsp에서는 어떤 내장 클래스를 사용하기 위해서는 java가 아니므로 약간은 다르게 선언 합니다.
        예 : <%@ page import="java.sql.*" %> ==>java.sql에 있는 모든 내장 클래스를 사용하겠다. 라구 서언하는 것
참고로 jsp에서 내장 객체 서언은 <%@ page import="이곳에 내장객체 쓰기" %> 형식으로 사용합니다.

지금까지 내장객체 사용하는 방법에 대해서 알아 보았습니다.
본격적으로 db연결하는 방법(jsp에서는 지원안하는 것으로 알고 있슴, 그래서 java논 사용해야함)
1.객체 선언
2.먼저 드라이버 설정
3.Connection 만들기
4.statement 만들기
5.sql문 만들기
6.실행하기 순으로 만들어 지구요..


1.객체 선언
Connection con=null;  ==>Connection 객체를 사용하겠다 선언 하는 것
Statement stmt=null;  ==>Statement 객체를 사용하겠다 선언 하는 것
ResultSet rs=null; 

2.먼저 드라이버 설정
Class.forName("oracle.jdbc.driver.OracleDriver");  ==>오라클 드라이버(오라클 db)를 사용하겠다 선언하는 것
Class.forName("org.gjt.mm.mysql.Driver");        ==>my_sql 드라이버 설정
드라이버 설정은 객각의 밴더(database를 만든 회사)에서 구할 수 있고 참고로 오라클은 오라클을 설치하며
C:\oracle\ora81\jdbc\lib 에보면
classes12.zip이란 파일이 있구요 그것을 열어보면 디렉토리 구조가 oracle.jdbc.driver 되었구 .OracleDriver.class가 있을 것입니다.
그리구 드라이버 설정 전에 환경변수에  C:\oracle\ora81\jdbc\lib\classes12.zip 가 설정이 되어 있어야 하구요..

3.connection 만들기
DriverManager.getConnection(String sid, String userId,String passwd) 라는 클래스를 쓰거든요..
sid jdbc:oracle:thin:@바꿔쓸 부분1(자신의 ip):1521:바꿔쓸 부분2(자신의 sid)
바꿔쓸 부분 하나 : 자신의 아이피로 자신의 db이면 127.0.0.1로 쓰면 되구
아니면 211.230.51.241이란 실제 자신의 아이피를 쓰면 된다.
바꿔쓸 부분2 oradev 자신의 db의 sid(database 인식자)이름을 쓰면 되구요...
이것의 위치는 오라클의 경우
C:\oracle\ora81\network\ADMIN\listener.ora 파일을 보면
SID_NAME = oradev 이라구 있는데 oradev를 참조하면 된다.
con = DriverManager.getConnection("jdbc:oracle:thin:@211.230.51.241:1521:oradev", "scott","tiger");
이렇게 구성하면 되구요..

4.statement 만들기
stmt = con.createStatement(); ==>그냥 외우세요..

5.sql문 만들기
String sql = "select * from emp"; ==>sql 문 쓰기 (사원 테이블 검색하기 sql문)

6.실행하기
select 시(검색)
ResultSet(검색한 내용을 담는 객체) 을 만드는 과정 입니다.
rs = stmt.executeQuery(sql); sql이란 위에서 정의한 sql문

rs.getString(1)==>첫번째 column의 내용을 가지오기
rs.getString("emp_no"); ==>column이름이 emp_no인 것 가져오기

칼럼의 전체 내용 가져오려면 while으로 돌려야 하구요.
rs.next()은 다음의 column을 가져오라는 명령어..
하나만 가져오려구 해두 꼭
rs.next()해야 하구요..

칼럼의 모든 값 가져요기
while(rs.next()){
                        System.out.println(rs.getString("emp_no"));
}

칼럼의 하나만 가져요기
rs.next();
System.out.println(rs.getString("emp_no"));

System.out.println=>tomcat서버에 어떤 ()안의 내용을 출력하기

out.println=>web 화면에 어떤 ()안의 내용을 출력하기


완료..
그런데 이런한 과정을 꼭
try{

}catch(Exception e){
        System.out.println("에러가 발생하였습니다.");
}
문안에 넣아야 해요.. 에러가 날 소지가 있다구 해서 예외처리 되었거든요..

초보자가 보기에는 내용이 넘 어렵죠,
jsp나 java를 하신 분들은 쉬운 내용이겠지만..
초보자 분들은 내용이 어려우시면 외우셔서 사용하셔두 됩니다.

 

전체 소스는 다음과 같습니다.

<%@ page import="java.sql.*" %>
<%
        Connection con=null;
        Statement stmt=null;
        ResultSet rs=null;
        try{

                Class.forName("oracle.jdbc.driver.OracleDriver");
                con = DriverManager.getConnection("jdbc:oracle:thin:@211.230.51.241:1521:oradev", "scott","tiger");
                String sql = " select * from emp";
                stmt = con.createStatement();       
                rs = stmt.executeQuery(sql);
                while(rs.next())
                {
                        out.println(rs.getString("emp_no"));
                }
                out.println(con);
        }catch(Exception e){
                e.printStackTrace();
        }
        finally
        {
        if(rs != null) { try{ rs.close(); }catch(Exception e){} }
        if(stmt != null) { try{ stmt.close(); }catch(Exception e){} }
        if(con != null) { try{ con.close(); }catch(Exception e){} }
    }
%>

반응형