"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como inserir e recuperar objetos java.time.LocalDate em bancos de dados JDBC?

Como inserir e recuperar objetos java.time.LocalDate em bancos de dados JDBC?

Publicado em 14/01/2025
Navegar:594

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

Inserindo e buscando objetos java.time.LocalDate de/para um banco de dados SQL como H2

Pergunta: Como lidar com tipos java.time como LocalDate via JDBC com um banco de dados SQL, como H2?

Legacy Approach: Usando PreparedStatement::setDate e ResultSet::getDate funcionam para o tipo java.sql.Date desatualizado. No entanto, é preferível evitar essas classes legadas problemáticas.

Abordagem moderna: Existem dois caminhos principais:

  1. Drivers compatíveis com JDBC 4.2: Se o driver JDBC suportar JDBC 4.2 ou posterior, você poderá trabalhar diretamente com objetos java.time. Esses drivers têm métodos setObject e getObject para conversões de tipo de dados.
  2. Drivers mais antigos, pré-JDBC 4.2: Para drivers anteriores ao JDBC 4.2, converta temporariamente objetos java.time em seus equivalentes java.sql e vice-versa. Use novos métodos de conversão adicionados às classes legadas.

Exemplo de uso do driver compatível com 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);

Exemplo de uso de driver não compatível:

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

Recomendação: Use a abordagem compatível com JDBC 4.2 sempre que possível. É mais simples e com segurança de digitação. No entanto, o método não compatível ainda pode ser usado para drivers que não suportam JDBC 4.2.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3