Java 애플리케이션에서 MySQL 데이터베이스에 NULL 값을 삽입해야 하는 경우가 종종 있습니다. 이때는 PreparedStatement의 setNull() 메서드를 사용하면 됩니다.
NULL 값 설정 기본 문법
Java에서 NULL 값을 설정하는 기본 구문은 다음과 같습니다.
ps.setNull(파라미터인덱스, Types.NULL);
첫 번째 인자는 SQL 문에서의 파라미터 위치(인덱스)이며, 두 번째 인자는 JDBC 타입입니다. 일반적으로 Types.NULL을 사용하지만, 컬럼의 실제 데이터 타입에 맞춰 Types.VARCHAR 등을 지정하는 것이 더 안전합니다.
1단계: 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable1893
(
FirstName varchar(20)
);
Query OK, 0 rows affected (0.00 sec)2단계: Java 코드 작성하기
다음은 JDBC를 사용하여 NULL 값을 데이터베이스에 삽입하는 전체 Java 코드입니다.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Types;
public class InsertNullValueIntoDatabase{
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 DemoTable1893(FirstName) values(?) ";
ps= con.prepareStatement(query);
ps.setNull(1, Types.NULL);
ps.executeUpdate();
System.out.println("DemoTable1893 테이블을 확인하세요.");
}
catch(Exception e){
e.printStackTrace();
}
}
}코드 설명
- DriverManager.getConnection(): 지정한 URL, 사용자명, 비밀번호로 MySQL 데이터베이스에 연결합니다.
- prepareStatement(query): 파라미터 바인딩이 가능한 PreparedStatement 객체를 생성합니다.
- setNull(1, Types.NULL): 첫 번째 파라미터 자리에 NULL 값을 설정합니다.
- executeUpdate(): INSERT 문을 실행하여 데이터를 저장합니다.
3단계: 결과 확인하기
위 코드를 실행하면 정상적으로 NULL 값이 삽입됩니다. 이제 SELECT 문으로 MySQL 테이블의 내용을 직접 확인해 보겠습니다.
mysql> select * from DemoTable1893;
실행 결과는 다음과 같습니다.
+-----------+ | FirstName | +-----------+ | NULL | +-----------+ 1 row in set (0.00 sec)
마무리
이처럼 setNull() 메서드를 활용하면 Java 애플리케이션에서 손쉽게 MySQL 데이터베이스 컬럼에 NULL 값을 삽입할 수 있습니다. 참고로 실무 환경에서는 데이터베이스 연결 정보를 코드에 하드코딩하지 말고, 설정 파일이나 환경 변수로 분리하여 관리하는 것이 보안상 안전합니다. 또한 try-with-resources 구문을 사용하면 Connection과 PreparedStatement가 자동으로 닫히므로 리소스 누수를 방지할 수 있습니다.