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

Java로 MySQL DATE 열에 날짜 값 삽입하는 방법

Java를 사용해 MySQL의 DATE 타입 열에 날짜 삽입하기

MySQL 테이블의 DATE 타입 열에 Java로 날짜 값을 삽입하려면 PreparedStatement를 활용하는 것이 가장 안전하고 효율적인 방법입니다. PreparedStatement는 SQL 인젝션을 방지하고 날짜 데이터를 올바르게 처리해 줍니다.


1단계: 테이블 생성

먼저 DATE 타입의 ArrivalDate 열을 포함하는 테이블을 생성합니다.

mysql> create table DemoTable(
    PassengerId int,
    PassengerName varchar(40),
    ArrivalDate date
);
Query OK, 0 rows affected (0.82 sec)

2단계: Java 코드 작성

아래는 현재 날짜를 MySQL 테이블에 삽입하는 Java 코드입니다. 핵심은 java.util.Date 객체를 JDBC에서 사용하는 java.sql.Date 객체로 변환하는 것입니다.

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

public class InsertDateFromJava {
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement ps = null;
        try {
            // java.util.Date를 java.sql.Date로 변환
            java.util.Date javaDate = new java.util.Date();
            java.sql.Date mySQLDate = new java.sql.Date(javaDate.getTime());

            // 데이터베이스 연결
            con = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/web?useSSL=false", "root", "123456");

            // INSERT 쿼리 준비
            String query = "insert into DemoTable(PassengerId, PassengerName, ArrivalDate) values(?,?,?)";
            ps = con.prepareStatement(query);

            // 파라미터 바인딩
            ps.setInt(1, 101);
            ps.setString(2, "Adam");
            ps.setDate(3, mySQLDate);

            // 실행
            ps.executeUpdate();
            System.out.println("현재 날짜와 함께 레코드가 삽입되었습니다......");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3단계: 실행 결과 확인

위 프로그램을 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

현재 날짜와 함께 레코드가 삽입되었습니다......

4단계: MySQL에서 데이터 조회

테이블에 실제로 데이터가 정상적으로 삽입되었는지 확인해 보겠습니다.

mysql> select * from DemoTable;

실행 결과는 다음과 같습니다.

+-------------+---------------+-------------+
| PassengerId | PassengerName | ArrivalDate |
+-------------+---------------+-------------+
|        101 | Adam          | 2019-09-07  |
+-------------+---------------+-------------+
1 row in set (0.00 sec)

핵심 포인트 정리

  • java.util.Date → java.sql.Date 변환: JDBC의 setDate() 메서드는 java.sql.Date 타입만 허용하므로, getTime() 메서드를 이용해 변환해야 합니다.
  • PreparedStatement 사용: 물음표(?) 플레이스홀더에 값을 바인딩하면 SQL 인젝션 위험을 줄이고 날짜 형식 오류를 예방할 수 있습니다.
  • setDate() 메서드: 세 번째 파라미터 위치에 java.sql.Date 객체를 전달하여 DATE 타입 열에 값을 삽입합니다.