Heim >Java >javaLernprogramm >Wie füge ich java.time.LocalDate-Objekte in JDBC-Datenbanken ein und rufe sie ab?

Wie füge ich java.time.LocalDate-Objekte in JDBC-Datenbanken ein und rufe sie ab?

Barbara Streisand
Barbara StreisandOriginal
2024-12-20 08:53:10236Durchsuche

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

Einfügen und Abrufen von java.time.LocalDate-Objekten in/aus einer SQL-Datenbank wie H2

Frage: Wie man mit java.time-Typen umgeht wie LocalDate über JDBC mit einer SQL-Datenbank, wie z H2?

Legacy-Ansatz: Die Verwendung von PreparedStatement::setDate und ResultSet::getDate funktioniert für den veralteten Typ java.sql.Date. Es ist jedoch vorzuziehen, diese problematischen Legacy-Klassen zu vermeiden.

Moderner Ansatz: Es gibt zwei Hauptrouten:

  1. JDBC 4.2-kompatible Treiber: Wenn der JDBC-Treiber JDBC 4.2 oder höher unterstützt, können Sie direkt mit java.time-Objekten arbeiten. Diese Treiber verfügen über die Methoden setObject und getObject für Datentypkonvertierungen.
  2. Ältere Treiber, vor JDBC 4.2: Konvertieren Sie bei Treibern vor JDBC 4.2 vorübergehend java.time-Objekte in ihre java.sql-Entsprechungen und umgekehrt. Verwenden Sie neue Konvertierungsmethoden, die zu Legacy-Klassen hinzugefügt wurden.

Beispiel für die Verwendung eines JDBC 4.2-kompatiblen Treibers:

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

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

Beispiel für die Verwendung eines nicht kompatiblen Treibers Treiber:

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

Empfehlung: Verwenden Sie wann immer möglich den JDBC 4.2-kompatiblen Ansatz. Es ist einfacher und typsicher. Die nicht kompatible Methode kann jedoch weiterhin für Treiber verwendet werden, die JDBC 4.2 nicht unterstützen.

Das obige ist der detaillierte Inhalt vonWie füge ich java.time.LocalDate-Objekte in JDBC-Datenbanken ein und rufe sie ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn