2025-09-12 JDBC

Ckd gus·2026년 2월 2일

JDBC로 MySQL 연결하기

JDBC는 자바 데이터베이스 연결(Java Database Connectivity) 의 약자로, 자바 프로그램이 다양한 종류의 데이터베이스에 연결하고 SQL 문을 실행하여 데이터를 조회(SELECT), 삽입(INSERT), 수정(UPDATE), 삭제(DELETE) 하는 등의 작업을 할 수 있도록 돕는 표준 API(응용 프로그래밍 인터페이스) 이다.


IntelliJ에서 MySQL과 연결하기

1) 프로젝트 생성

  • 새 프로젝트 생성
  • 이름과 위치 설정
  • 시스템 빌드: Gradle
  • Gradle DSL: Groovy
  • 생성

2) 라이브러리 추가(설정에서 직접 추가)

IntelliJ에서

  • 설정 → 프로젝트 구조 → 라이브러리
  • + 버튼 클릭 → Maven
  • 본인 MySQL 라이브러리(드라이버) 주소 입력 → 확인/추가

추가하면 라이브러리 클래스가 프로젝트에 포함된다.
적용을 누르고 확인을 누른다.


3) (선택) Gradle 빌드/실행을 IntelliJ로 변경

  • 설정 → 빌드 도구 → Gradle
  • “다음을 사용하여 빌드 및 실행”을 IntelliJ IDEA 로 변경 후 확인

필수는 아니지만 빌드/실행 속도에 영향을 줄 수 있으니 해두면 나쁠 건 없다.


4) 외부 라이브러리 확인

왼쪽 탭에서 외부 라이브러리(External Libraries) 를 눌렀을 때
추가한 드라이버가 보이면 정상적으로 추가된 것이다.


5) build.gradle에 의존성 추가(Gradle 방식)

build.gradle 클릭 → dependenciesimplementation 으로 mysql-connector 의존성을 추가한다.

오타 수정: buold.gradlebuild.gradle
오타 수정: myslq-connectormysql-connector

그리고 화면에 뜨는 코끼리(Gradle Sync) 를 꼭 클릭해서 반영한다.


JDBC 코드 작성(INSERT 예제)

이제 소스 파일로 돌아가서 연결하기 위한 코드를 작성한다.

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

public class insertTest {
    public static void main(String[] args) throws Exception{
        //0. 드라이버를 로딩한다. (MySQL 드라이버를 메모리에 올리기 - Class.forName)
        //최신 버전은 생략 가능!

        String url = "jdbc:mysql://localhost:0000/liondb";
        // DBMS들마다 URL 형식이 조금씩 다르다.
        String user = "root";
        String password = "root1234";

        //1. 접속 -- Connection
        Connection conn = DriverManager.getConnection(url,user,password);

        //2. 쿼리 작성 -- PreparedStatement
        // 쿼리문이 실행될 때 DBMS가 알아들을 수 있게 번역(파싱)된다.
        // 같은 쿼리가 또 들어오면 이미 번역한 것을 재사용한다.
        //insert into students (name) values('kang');
        //insert into students (name) values('hong');
        //insert into students (name) values('kim');
        //위의 쿼리는 각자 다른 쿼리로 인식!
        // statement는 값까지 들어간 "완성된 쿼리"로 실행됨

        // preparedStatement는
        // insert into student (name) values(?);
        // 여기까지를 먼저 번역해두고 값만 바인딩한다.

        String sql = "insert into dept(deptno, dname, loc) values(?,?,?)";
        PreparedStatement ps = conn.prepareStatement(sql);
        // 반드시 ?에 값을 채워줘야 함 -- 쿼리를 완성시켜야 함
        ps.setInt(1,50);
        ps.setString(2,"lion");
        ps.setString(3,"seoul");

        //3. 실행!
        //ps.executeUpdate(); int값 리턴
        //ps.executeQuery(); resultSet값 리턴 (조회 결과 리턴)
        int resultCount = ps.executeUpdate();
        if(resultCount==1){
            System.out.println("입력성공");
        }
        ps.close();
        conn.close();
    }
}

이후 코드를 실행한 다음, MySQL에서 SELECT * FROM 테이블명; 으로 확인해 보면 데이터가 들어가 있는 것을 볼 수 있다.

와! 재밌다!


느낀점

생각보다 재미있었다. 근데 아직까진 강사님이 말씀하시는 대로 따라가기만 해서, 나중에 프로젝트를 할 때 자유자재로 사용해보고 싶다.

아직 연결하고 간단한 쿼리문만 입력해봐서 어려운지는 아직 잘 모르겠다.

profile
백엔드 공부중입니다.

0개의 댓글