Maison >Java >javaDidacticiel >Comment gérer les objets java.time avec JDBC dans la base de données H2 ?

Comment gérer les objets java.time avec JDBC dans la base de données H2 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-31 19:02:11251parcourir

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

Échange de données JDBC avec des objets java.time

Question : Comment puis-je inclure les types java.time dans mon Base de données SQL utilisant JDBC, en particulier le moteur de base de données H2 ?

Réponse : Il existe deux méthodes pour orchestrer l'échange de données avec des objets java.time via JDBC :

Pilotes compatibles JDBC 4.2

  • Avec des pilotes JDBC compatibles avec JDBC 4.2 ou supérieur , vous pouvez manipuler directement les objets java.time.
  • Le comité JDBC a incorporé les méthodes setObject/getObject pour gérer ceci, éliminant le besoin de méthodes de type setLocalDate/getLocalDate.
  • Pour insérer des données, utilisez la méthode setObject avec votre objet java.time comme argument.
  • Pour la récupération de données, utilisez getObject méthode avec le type de données attendu comme argument supplémentaire, garantissant la sécurité du type.

Non-JDBC 4.2 Pilotes compatibles

  • Pour les pilotes JDBC qui ne sont pas encore compatibles avec JDBC 4.2, convertissez temporairement entre les types java.time et java.sql.
  • Utilisez java.sql.Date. valueOf pour convertir LocalDate en java.sql.Date pour l'insertion.
  • Pour la récupération, convertissez le récupéré java.sql.Date dans LocalDate à l'aide de sa méthode toLocalDate.

Exemple de code utilisant la base de données H2

Conforme à 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);

Non-JDBC 4.2 Conforme

// 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();

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn