MySQLデータベースにNULL(空)のjava.sql.Dateを挿入するエレガントな方法
はじめに
JavaからMySQLデータベースへ日付型のデータを扱う際、値が未定義の場合には NULL(空のjava.sql.Date) を挿入したいケースがあります。本記事では、PreparedStatement の setNull() メソッドを使って、NULLの日付を elegantly に挿入する方法を解説します。
1. テーブルの作成
まず、データベース「web」内にテスト用のテーブルを作成します。以下がテーブル作成のクエリです。
mysql> create table DemoTable
(
AdmissionDate date
);
Query OK, 0 rows affected (0.53 sec)2. NULLのjava.sql.Dateを挿入するJavaコード
次に、空(NULL)のjava.sql.DateをMySQLデータベースに挿入するJavaコードを見てみましょう。ポイントは ps.setNull(1, java.sql.Types.DATE) の部分です。
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(int parameterIndex, int sqlType):第1引数にはプレースホルダ「?」の位置(インデックスは1から開始)、第2引数にはSQLの型を指定します。日付の場合は
java.sql.Types.DATEを渡します。 - これにより、プレースホルダに明示的にNULLがバインドされ、実行時にSQL例外が発生することなくNULLを挿入できます。
- なお、
ps.setDate(1, null)のようにnullを直接渡すことでも同様にNULLを挿入可能ですが、型を明示できるsetNull()の方が意図が伝わりやすく安全です。
3. 実行結果の確認
上記のプログラムを実行すると、コンソールにメッセージが表示され、レコードが挿入されます。
その後、同じテーブルからレコードをSELECT文で確認してみましょう。AdmissionDate列に空(NULL)の日付が正常に挿入されていることが分かります。
mysql> select *from DemoTable; +---------------+ | AdmissionDate | +---------------+ | NULL | +---------------+ 1 row in set (0.00 sec)
まとめ
MySQLにNULLのjava.sql.Dateを挿入する場合は、PreparedStatement の setNull() メソッドに java.sql.Types.DATE を指定するのが最も明確でエレガントな方法です。この手法を使えば、日付が未確定のレコードでも安全にデータベースへ登録できます。
-
JavaでMySQLデータベースにNULL値を挿入する方法
JavaからデータベースにNULL値を挿入したいケースはよくあります。その場合、PreparedStatementのsetNull()メソッドを使用します。基本的な構文は以下の通りです。ps.setNull(インデックス番号, Types.NULL);この記事では、実際にサンプルを通してNULL値の挿入手順を解説します。1. テーブルの作成まず、MySQLでテスト用のテーブルを作成します。mysql> create table DemoTable1893 ( FirstName varchar(20) ); Query OK, 0 rows affected (0
-
JavaでMySQLテーブルのデータをリスト(ArrayList)として取得する方法
JavaでMySQLテーブルからデータを取得してリスト形式に格納したい場合、ArrayListの概念を活用するのが効果的です。特に、ArrayList<ArrayList<データ型>>のように入れ子構造のArrayListを使うことで、テーブルの各行を内側のリスト、テーブル全体を外側のリストとして管理できます。基本的な構文ArrayList<ArrayList<yourDataType>> anyVariableName = new ArrayList<ArrayList<yourDataType>>();サンプルテーブル