MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLデータベースにNULL(空)のjava.sql.Dateを挿入するエレガントな方法

はじめに

JavaからMySQLデータベースへ日付型のデータを扱う際、値が未定義の場合には NULL(空のjava.sql.Date) を挿入したいケースがあります。本記事では、PreparedStatementsetNull() メソッドを使って、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を挿入する場合は、PreparedStatementsetNull() メソッドに java.sql.Types.DATE を指定するのが最も明確でエレガントな方法です。この手法を使えば、日付が未確定のレコードでも安全にデータベースへ登録できます。

  1. 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

  2. JavaでMySQLテーブルのデータをリスト(ArrayList)として取得する方法

    JavaでMySQLテーブルからデータを取得してリスト形式に格納したい場合、ArrayListの概念を活用するのが効果的です。特に、ArrayList<ArrayList<データ型>>のように入れ子構造のArrayListを使うことで、テーブルの各行を内側のリスト、テーブル全体を外側のリストとして管理できます。基本的な構文ArrayList<ArrayList<yourDataType>> anyVariableName = new ArrayList<ArrayList<yourDataType>>();サンプルテーブル