Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 데이터베이스에 NULL java.sql.Date 값을 삽입하는 가장 깔끔한 방법

MySQL에 빈(NULL) 날짜 값 삽입하기

데이터베이스 작업을 하다 보면 날짜 정보가 아직 확정되지 않았거나 존재하지 않는 경우가 있습니다. 이럴 때 임의의 기본 날짜를 넣는 대신 NULL 값을 그대로 저장하는 것이 올바른 설계입니다. 자바(JDBC)에서는 PreparedStatementsetNull() 메서드를 사용하면 매우 깔끔하게 처리할 수 있습니다.

아래에서 실제 동작하는 전체 과정을 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 'web' 데이터베이스에 날짜 컬럼을 가진 테이블을 생성합니다.

mysql> create table DemoTable
(
    AdmissionDate date
);
Query OK, 0 rows affected (0.53 sec)

2단계: Java 코드로 NULL 날짜 삽입

다음은 java.sql.Date 타입의 빈(NULL) 값을 MySQL 데이터베이스에 삽입하는 자바 코드입니다.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class InsertNullDateDemo{
    public static void main(String[] args){
        Connection con=null;
        PreparedStatement ps=null;
        try{
            con=DriverManager.getConnection("jdbc:mysql://localhost:3306/web?useSSL=false", "root","123456");
            String query="insert into DemoTable(AdmissionDate) values(?) ";
            ps= con.prepareStatement(query);
            ps.setNull(1, java.sql.Types.DATE);
            ps.executeUpdate();
            System.out.println("check the table......");
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}

핵심 포인트: setNull() 메서드

이 코드의 핵심은 바로 다음 한 줄입니다.

ps.setNull(1, java.sql.Types.DATE);
  • 첫 번째 인자(1): SQL 문에서 물음표(?) 파라미터의 위치 인덱스입니다. JDBC에서는 인덱스가 0이 아닌 1부터 시작합니다.
  • 두 번째 인자(java.sql.Types.DATE): 해당 파라미터의 SQL 타입을 지정합니다. 드라이버가 어떤 종류의 NULL 값인지 정확히 알 수 있도록 해주는 역할을 합니다.

참고로 ps.setObject(1, null)처럼 객체에 null을 직접 전달하는 방법도 동작하지만, 타입 정보가 없어 드라이버에 따라 오류가 발생할 수 있습니다. 따라서 setNull()에 명시적으로 SQL 타입을 지정해 주는 것이 가장 안전하고 권장되는 방식입니다.

3단계: 실행 결과 확인

코드를 실행하면 콘솔에 "check the table......" 메시지가 출력됩니다.

MySQL 데이터베이스에 NULL java.sql.Date 값을 삽입하는 가장 깔끔한 방법


MySQL 데이터베이스에 NULL java.sql.Date 값을 삽입하는 가장 깔끔한 방법

프로그램 실행 후 다음과 같은 출력 결과를 확인할 수 있습니다.

MySQL 데이터베이스에 NULL java.sql.Date 값을 삽입하는 가장 깔끔한 방법

4단계: 테이블 데이터 검증

이제 실제로 테이블에 데이터가 어떻게 저장되었는지 조회해 보겠습니다. 아래 스냅샷에서 볼 수 있듯이, 빈(NULL) 날짜 값이 성공적으로 삽입된 것을 확인할 수 있습니다.

MySQL 데이터베이스에 NULL java.sql.Date 값을 삽입하는 가장 깔끔한 방법

마무리 정리

MySQL에 빈 날짜 값을 삽입할 때는 문자열이나 특정 기본 날짜를 대신 사용하는 것보다 PreparedStatement.setNull(index, java.sql.Types.DATE)를 활용하는 것이 가장 우아하고 안전한 방법입니다. 이 방식은 SQL 타입을 명확히 지정하기 때문에 드라이버 호환성 문제도 피할 수 있으며, 코드의 의도도 분명하게 드러납니다.