JSP에서 JDBC로 MariaDB 쿼리 작성 및 실행 방법

JSP에서 JDBC로 MariaDB 쿼리 작성 및 실행 방법

이번 글에서는 JSP를 사용하여 JDBC로 MariaDB에 연결하고, 데이터베이스에 쿼리문을 작성 및 실행하는 방법에 대해 알아보겠습니다. 이 과정을 통해 기본적인 데이터베이스 연동부터 데이터 삽입, 조회 작업까지 다루게 됩니다.

1. JDBC 설정 및 MariaDB 연결

JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 연결하고 SQL 쿼리를 실행할 수 있도록 해주는 API입니다. MariaDB와의 연결을 위해 JDBConnect 클래스를 작성하고, 이를 통해 데이터베이스와의 연결을 관리할 수 있습니다. 아래는 연결 클래스를 작성하는 예제입니다.

package common;

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

import javax.servlet.ServletContext;

public class JDBConnect {
    public Connection con;
    public Statement stmt;  
    public PreparedStatement psmt;  
    public ResultSet rs;

    // 기본 생성자
    public JDBConnect(ServletContext application) {
        try {
            // JDBC 드라이버 로드
            String driver = application.getInitParameter("MariaDBDriver");
            Class.forName(driver);

            // DB에 연결
            String url = application.getInitParameter("MariaDBURL");
            String id = application.getInitParameter("MariaDBId");
            String pwd = application.getInitParameter("MariaDBPwd");
            con = DriverManager.getConnection(url, id, pwd);

            System.out.println("DB 연결 성공(인수 생성자)");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 연결 해제(자원 반납)
    public void close() { 
        try {            
            if (rs != null) rs.close(); 
            if (stmt != null) stmt.close();
            if (psmt != null) psmt.close();
            if (con != null) con.close(); 

            System.out.println("JDBC 자원 해제");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

자세한 설명은 아래 이전 게시글을 참고하시면 됩니다.

2. 회원 추가 테스트 (executeUpdate() 사용)

아래 코드는 JSP 페이지에서 JDBC를 통해 MariaDB에 데이터를 삽입하는 예제입니다. 이 예제에서는 회원 정보를 데이터베이스에 추가하는 SQL INSERT 문을 실행합니다.

<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="common.JDBConnect" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
    <title>회원 추가 테스트</title>
</head>
<body>
    <h2>회원 추가 테스트 (MariaDB용)</h2>
    <%
    // DB에 연결
    JDBConnect jdbc = new JDBConnect();
    
    // 테스트용 입력값 준비 
    String id = "user2";
    String pass = "abcd1234";
    String name = "사용자2";

    // 쿼리문 생성
    String sql = "INSERT INTO member (id, pass, name, regidate) VALUES (?, ?, ?, CURRENT_TIMESTAMP)";
    PreparedStatement psmt = jdbc.con.prepareStatement(sql);  
    psmt.setString(1, id);
    psmt.setString(2, pass);
    psmt.setString(3, name);

    // 쿼리 수행
    int inResult = psmt.executeUpdate(); 
    out.println(inResult + " 행이 입력되었습니다.");

    // 연결 닫기
    jdbc.close(); 
    %>
</body>
</html>
  • DB 연결: 먼저, JDBConnect 클래스를 이용하여 MariaDB에 연결합니다. 이 클래스는 데이터베이스와의 연결을 관리하는 역할을 합니다.
  • 테스트용 입력값 준비: 예제에서는 회원 ID, 비밀번호, 이름을 각각 id, pass, name 변수에 저장합니다. 이 변수들은 이후 SQL 쿼리문에 바인딩됩니다.
  • 쿼리문 생성: INSERT INTO member (id, pass, name, regidate) VALUES (?, ?, ?, CURRENT_TIMESTAMP)라는 SQL 쿼리를 작성합니다. 여기서 ?는 나중에 변수 값을 바인딩할 위치를 나타냅니다.
  • PreparedStatement 객체 생성 및 바인딩: PreparedStatement 객체를 사용하여 SQL 쿼리를 준비하고, psmt.setString() 메서드를 사용해 각각의 ? 자리에 id, pass, name 값을 바인딩합니다.
  • 쿼리 실행: executeUpdate() 메서드를 호출하여 SQL 쿼리를 실행하고, 반환된 값은 삽입된 행의 개수를 나타냅니다. 이 값을 이용해 몇 행이 삽입되었는지를 화면에 출력합니다.
  • 연결 닫기: 마지막으로, 데이터베이스 연결을 해제하여 자원을 반납합니다.
회원 추가 테스트 예제 코드 실행 결과 화면

3. 회원 목록 조회 테스트 (executeQuery() 사용)

다음은 회원 목록을 조회하는 예제입니다. 이 예제에서는 SELECT 문을 사용하여 데이터베이스에 저장된 회원 정보를 조회하고, 결과를 JSP 페이지에 출력합니다:

<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="common.JDBConnect" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
<html>
<head><title>회원 목록 조회</title></head>
<body>
    <h2>회원 목록 조회 테스트 (MariaDB용)</h2>
    <%
    // DB에 연결
    JDBConnect jdbc = new JDBConnect();

    // 쿼리문 생성   
    String sql = "SELECT id, pass, name, regidate FROM member";  
    Statement stmt = jdbc.con.createStatement();  

    // 쿼리 수행
    ResultSet rs = stmt.executeQuery(sql);  

    // 결과 확인(웹 페이지에 출력)
    while (rs.next()) { 
        String id = rs.getString(1);
        String pw = rs.getString(2);
        String name = rs.getString("name");
        java.sql.Timestamp regidate = rs.getTimestamp("regidate");
        
        out.println(String.format("%s %s %s %s", id, pw, name, regidate) + "<br/>"); 
    }

    // 연결 닫기
    jdbc.close();
    %>
</body>
</html>
  • DB 연결: JDBConnect 클래스를 이용해 MariaDB에 연결합니다. 이 클래스는 데이터베이스와의 연결을 관리하는 역할을 합니다.
  • 쿼리문 생성: 회원 정보를 조회하기 위한 SQL 쿼리 SELECT id, pass, name, regidate FROM member를 작성합니다. 이 쿼리는 member 테이블에서 ID, 비밀번호, 이름, 등록 날짜를 조회합니다.
  • Statement 객체 생성 및 쿼리 실행: Statement 객체를 생성하고 executeQuery() 메서드를 사용하여 SQL 쿼리를 실행합니다. 이 메서드는 결과를 ResultSet 객체에 저장합니다.
  • 결과 확인 및 출력: ResultSet 객체를 반복문으로 순회하면서 각 행의 데이터를 가져옵니다. rs.getString()rs.getTimestamp() 메서드를 사용해 각각의 열 값을 가져와 화면에 출력합니다.
  • 연결 닫기: 마지막으로, 데이터베이스 연결을 해제하여 자원을 반납합니다.
회원 목록 조회 테스트 실행 결과 화면

이 두 가지 예제를 통해 JDBC를 사용하여 MariaDB에 데이터를 삽입하고 조회하는 기본적인 방법에 대해 알아보았습니다. 이러한 방법을 응용하여 다양한 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 수행할 수 있습니다.

관련 이전 게시글

위로 스크롤