// education

JDBC 데이터베이스 연동과 SQL CRUD 실행

자바 애플리케이션과 **관계형 데이터베이스(MySQL, PostgreSQL, Oracle, SQLite)**를 연결하여 데이터를 영구 보관하고 관리하는 JDBC(Java Database Connectivity) 기술을 다룹니다.


1. JDBC 연동 용어 사전 (Glossary)


2. JDBC DB 연결 및 회원 등록/조회 실습

import java.sql.*;

public class JDBCExample {
    // DB 접속 정보
    private static final String URL = "jdbc:sqlite:davhave.db"; // SQLite 예시

    public static void main(String[] args) {
        String insertSQL = "INSERT INTO users (name, email) VALUES (?, ?)";
        String selectSQL = "SELECT * FROM users";

        try (Connection conn = DriverManager.getConnection(URL)) {
            System.out.println("데이터베이스 연결 성공!");

            // 1. PreparedStatement 데이터 삽입 (CRUD - Create)
            try (PreparedStatement pstmt = conn.prepareStatement(insertSQL)) {
                pstmt.setString(1, "홍길동");
                pstmt.setString(2, "hong@davhave.com");
                int rows = pstmt.executeUpdate();
                System.out.println(rows + "개 회원 데이터 추가 완료.");
            }

            // 2. ResultSet 데이터 조회 (CRUD - Read)
            try (PreparedStatement pstmt = conn.prepareStatement(selectSQL);
                 ResultSet rs = pstmt.executeQuery()) {
                while (rs.next()) {
                    int id = rs.getInt("id");
                    String name = rs.getString("name");
                    String email = rs.getString("email");
                    System.out.println("ID: " + id + " | 이름: " + name + " | 이메일: " + email);
                }
            }

        } catch (SQLException e) {
            System.err.println("DB 작업 오류: " + e.getMessage());
        }
    }
}

3. 자주 묻는 질문 (Q&A)

Q. Statement 대신 왜 PreparedStatement를 사용해야 하나요? A. Statement는 SQL 문에 변수를 합칠 때 문자열 연결(+)을 사용하므로 SQL Injection 보안 해킹 위험에 노출되고 매번 쿼리를 재컴파일합니다. 반면 PreparedStatement는 미리 컴파일된 바인딩 변수(?)를 써서 안전하고 실행 속도도 훨씬 빠릅니다.

← 이전자바 소켓(Socket) 네트워크 프로그래밍 다음 →자바 디자인 패턴(Singleton, Factory, DAO)과 실전 종합 프로젝트