ホームページ > Java > &#&チュートリアル > JDBC を使用して java.time オブジェクトを挿入および取得する方法

JDBC を使用して java.time オブジェクトを挿入および取得する方法

DDD
リリース: 2025-01-02 15:55:39
オリジナル
931 人が閲覧しました

How to Insert and Retrieve java.time Objects Using JDBC?

JDBC を使用した java.time オブジェクトの挿入と取得

JDBC では、JDBC を介して java.time オブジェクトを交換する 2 つの方法が提供されます。

JDBC 4.2 準拠ドライバー

JDBC 4.2 準拠ドライバー を使用すると、変換せずに java.time オブジェクトを直接操作できます。

挿入: setObject を使用して Java を渡します。 .time オブジェクト。ドライバーは、それを適切な SQL 型に自動的に変換します (例: LocalDate から SQL DATE)。

Retrieval: getObject を 2 回呼び出します。最初は引数なしで値をオブジェクトとして取得し、次に引数を付けて呼び出します。型安全性の引数として期待されるクラス。

非準拠ドライバー

JDBC 4.2 をサポートしていないドライバーの場合、次のコマンドを使用して java.time 型と java.sql 型の間で変換できます。コード:

挿入:

LocalDate date = ...;
java.sql.Date sqlDate = java.sql.Date.valueOf(date);
preparedStatement.setDate(1, sqlDate);
ログイン後にコピー

取得:

java.sql.Date sqlDate = resultSet.getDate(1);
LocalDate date = sqlDate.toLocalDate();
ログイン後にコピー

H2 の例

JDBC の使用H2 を使用した 4.2:

try {
    Class.forName("org.h2.Driver");
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

try (
    Connection conn = DriverManager.getConnection("jdbc:h2:mem:mydb");
    Statement stmt = conn.createStatement();
) {
    String sql = "CREATE TABLE test (id UUID, date DATE);";
    stmt.execute(sql);

    LocalDate today = LocalDate.now();
    sql = String.format("INSERT INTO test (id, date) VALUES (%s, %s)", UUID.randomUUID(), today);
    stmt.executeUpdate(sql);

    sql = "SELECT id, date FROM test";
    try (ResultSet rs = stmt.executeQuery(sql)) {
        while (rs.next()) {
            UUID id = rs.getObject("id", UUID.class);
            LocalDate date = rs.getObject("date", LocalDate.class);
            System.out.println(String.format("id: %s, date: %s", id, date));
        }
    }
} catch (SQLException e) {
    e.printStackTrace();
}
ログイン後にコピー

非準拠ドライバーを使用した例

H2 を使用した非 JDBC 4.2 の使用:

try {
    Class.forName("org.h2.Driver");
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

try (
    Connection conn = DriverManager.getConnection("jdbc:h2:mem:mydb");
    Statement stmt = conn.createStatement();
) {
    String sql = "CREATE TABLE test (id UUID, date DATE);";
    stmt.execute(sql);

    LocalDate today = LocalDate.now();
    java.sql.Date sqlDate = java.sql.Date.valueOf(today);
    sql = String.format("INSERT INTO test (id, date) VALUES (%s, %s)", UUID.randomUUID(), sqlDate);
    stmt.executeUpdate(sql);

    sql = "SELECT id, date FROM test";
    try (ResultSet rs = stmt.executeQuery(sql)) {
        while (rs.next()) {
            UUID id = (UUID) rs.getObject("id");
            java.sql.Date date = rs.getDate("date");
            LocalDate localDate = date.toLocalDate();
            System.out.println(String.format("id: %s, date: %s", id, localDate));
        }
    }
} catch (SQLException e) {
    e.printStackTrace();
}
ログイン後にコピー

以上がJDBC を使用して java.time オブジェクトを挿入および取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート