IT/JSP

[JSP] JSP와 DB 연동

gaing 2023. 10. 17. 04:16

기본적인 JDBC 프로그래밍

JDBC(Java DataBase Connectivity) 개요

  • Java에서 제공하는 Database 연동을 도와주는 API
  • 표준 SQL Interface

 

JDBC Driver

  • Database와 Java 프로그램 간의 번역기 역할을 함

JDBC와 DBMS의 연동 관계

 

JDBC 프로그래밍 절차

1. JDBC 인터페이스, 클래스를 위해 java.sql 패키지 import

2. 사용할 DBMS에 대한 JDBC Driver 로드

3. 데이터베이스에 접속

4. Connection으로부터 SQL문 생성

  • a. Statement 객체 : 완전한 SQL문을 실행할 때 사용
  • b. PreparedStatement 객체 : 특정한 위치에 사용자 지정 값이 들어가야 하는 경우

5. SQL문 실행

  • a. Statement 객체 또는 PreparedStatement 객체의 메소드임
  • b. PreparedStatement 객체로 생성한 SQL문은 메소드에 sql을 지정해주지 않음
  • c. executeQuert(sql) : SELECT문 실행, 검색된 결과 값을 포인터로 ResultSet 클래스에 반환함
  • d. executeUpdate() : INSERT, UPDATE, DELETE문을 실행 후 처리된 트랜잭션의 수를 정수형으로 반환함 (CREATE, ALTER, DROP문을 실행할 때도 사용)

6. SQL문 반환 결과 처리

7. 연결 해제

 

완전한 SQL문이 들어가는 경우의 절차

<@page  language="java" contentType="text/html;charset=UTF-8" 
        pageEncoding="UTF-8"
        import "java.sql.*"; %> // 1단계, java.sql 패키지 import

<%
        // 완전한 SQL문
        String sql = "SELECT * FROM Department";

        // DB서버 url을 String으로 만들어놓기
        String url = "데이터베이스 URL";

try {
        // 2단계, JDBC Driver 로드
        Class.forName("oracle.jdbc.driver.OracleDriver");

        // 3단계, DB서버 연결
        Connection con = DriverManager.getConnection(url, "아이디", "비밀번호");

        // 4단계, Statement 생성
        Statement stmt = con.createStatement();

        // 5단계, SELECT문 실행 및 결과 반환
        ResultSet rs = stmt.executeQuery(sql);

        ...

        // 6단계, 모든 행 반복 처리(출력)
        while (rs.next()) {
            println(rs.getString(1));
            println(rs.getString(2));
        }

       ...

        // 7단계, 사용한 자원 해제
        rs.close();
        stmt.close();
        con.close();

        ...

} catch (SQLException e) {
		println(e);
}

 

사용자 지정 값이 들어가는 경우의 절차

<@page  language="java" contentType="text/html;charset=UTF-8" 
        pageEncoding="UTF-8"
        import "java.sql.*"; %> // 1단계, java.sql 패키지 import

<%
        // 폼에서 받아온 값을 변수로 지정
        String Dept_ID   = request.getParameter("dept_id");
        String Dept_Name = request.getParameter("dept_name");
        String Dept_Tep  = request.getParameter("dept_tel");

        // 사용자 지정 값이 들어가야하는 SQL문
        String sql = "INSERT INTO Department (Dept_ID, Dept_Name, Dept_Tel) VALUES (?,?,?)";

        // DB서버 url을 String으로 만들어놓기
        String url = "데이터베이스 URL";

try {
        // 2단계, JDBC Driver 로드
        Class.forName("oracle.jdbc.driver.OracleDriver");

        // 3단계, DB서버 연결
        Connection con = DriverManager.getConnection(url, "아이디", "비밀번호");

        // 4단계, PreparedStatement 생성
        PreparedStatement pstmt = con.prepareStatement(sql);
            pstmt.setString(1, Dept_ID);
            pstmt.setString(2, Dept_Name);
            pstmt.setString(3, 

        // 5단계, INSERT문 실행
        pstmt.executeUpdate();

        // 7단계, 사용한 자원 해제
        pstmt.close();
        con.close();

        ...

} catch (SQLException e) {
        println(e);
}

'IT > JSP' 카테고리의 다른 글

[JSP] 쿠키와 세션  (1) 2023.10.17
[JSP] 자바빈과 표준 액션 태그  (0) 2023.10.17
[JSP] 입력 폼 설계  (1) 2023.10.17
[JSP] 내장 객체  (0) 2023.10.17
[JSP] 기본 문법  (2) 2023.10.17