ホームページ >Java >&#&チュートリアル >H2 データベースで JDBC を使用して java.time オブジェクトを処理するにはどうすればよいですか?

H2 データベースで JDBC を使用して java.time オブジェクトを処理するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-31 19:02:11271ブラウズ

How to Handle java.time Objects with JDBC in H2 Database?

java.time オブジェクトとの JDBC データ交換

質問: java.time 型をオブジェクトに含めるにはどうすればよいですか? JDBC を使用した SQL データベース、特に H2 データベースエンジン?

答え: JDBC を介して java.time オブジェクトとのデータ交換を調整するには、次の 2 つの方法があります:

JDBC 4.2 準拠ドライバー

  • JDBC 4.2 と互換性のある JDBC ドライバーを使用
  • JDBC 委員会は、これを処理するために setObject/getObject メソッドを組み込み、setLocalDate/getLocalDate のようなメソッドの必要性を排除しました。
  • データを挿入するには、引数として java.time オブジェクトを指定して setObject メソッドを使用します。
  • データを取得するには、getObject メソッドを引数として使用します。追加の引数として予期されるデータ型を指定し、型安全性を確保します。

非 JDBC 4.2 準拠ドライバー

  • まだ互換性のない JDBC ドライバーの場合JDBC 4.2、java.time と java.sql の間で一時的に変換type.
  • 挿入用に java.sql.Date.valueOf を使用して LocalDate を java.sql.Date に変換します。
  • 取得の場合、toLocalDate を使用して取得した java.sql.Date を LocalDate に変換します。 method.

を使用したコード例H2 データベース

JDBC 4.2 準拠

LocalDate today = LocalDate.now(ZoneId.of("America/Montreal"));

// Insert row
preparedStatement.setObject(1, today.minusDays(1));
preparedStatement.executeUpdate();
preparedStatement.setObject(1, today);
preparedStatement.executeUpdate();
preparedStatement.setObject(1, today.plusDays(1));
preparedStatement.executeUpdate();

// Retrieve data
LocalDate localDate = myResultSet.getObject("date_", LocalDate.class);

非 JDBC 4.2 準拠

// Insert row
preparedStatement.setDate(1, java.sql.Date.valueOf(today));
preparedStatement.executeUpdate();

// Retrieve data
java.sql.Date sqlDate = myResultSet.getDate("date_");
LocalDate localDate = sqlDate.toLocalDate();

以上がH2 データベースで JDBC を使用して java.time オブジェクトを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。