Maison >Java >javaDidacticiel >Comment insérer et récupérer des objets java.time.LocalDate dans des bases de données JDBC ?

Comment insérer et récupérer des objets java.time.LocalDate dans des bases de données JDBC ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-20 08:53:10238parcourir

How to Insert and Retrieve java.time.LocalDate Objects in JDBC Databases?

Insertion et récupération d'objets java.time.LocalDate vers/depuis une base de données SQL comme H2

Question : Comment gérer les types java.time comme LocalDate via JDBC avec une base de données SQL, comme H2 ?

Approche héritée : L'utilisation de PreparedStatement::setDate et ResultSet::getDate fonctionne pour le type java.sql.Date obsolète. Cependant, il est préférable d'éviter ces classes héritées problématiques.

Approche moderne : Il existe deux voies principales :

  1. Pilotes conformes à JDBC 4.2 : Si le pilote JDBC prend en charge JDBC 4.2 ou version ultérieure, vous pouvez travailler directement avec les objets java.time. Ces pilotes ont des méthodes setObject et getObject pour les conversions de types de données.
  2. Pilotes plus anciens, antérieurs à JDBC 4.2 : Pour les pilotes antérieurs à JDBC 4.2, convertissez temporairement les objets java.time en leurs équivalents java.sql et vice versa. Utilisez les nouvelles méthodes de conversion ajoutées aux classes existantes.

Exemple d'utilisation d'un pilote compatible JDBC 4.2 :

// Insert LocalDate as SQL DATE
preparedStatement.setObject(1, myLocalDate);

// Retrieve LocalDate from SQL DATE
LocalDate localDate = myResultSet.getObject("my_date_column", LocalDate.class);

Exemple d'utilisation d'un pilote non conforme Pilote :

// Convert LocalDate to java.sql.Date for insertion
java.sql.Date mySqlDate = java.sql.Date.valueOf(myLocalDate);
preparedStatement.setDate(1, mySqlDate);

// Convert java.sql.Date to LocalDate after retrieval
LocalDate localDate = mySqlDate.toLocalDate();

Recommandation : Utilisez l'approche conforme à JDBC 4.2 autant que possible. C'est plus simple et sécurisé. Cependant, la méthode non conforme peut toujours être utilisée pour les pilotes qui ne prennent pas en charge JDBC 4.2.

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