Frage: Wie man mit java.time-Typen umgeht wie LocalDate über JDBC mit einer SQL-Datenbank, wie zum Beispiel H2?
Legacy Ansatz: Die Verwendung von PreparedStatement::setDate und ResultSet::getDate funktioniert für den veralteten Typ java.sql.Date. Es ist jedoch besser, diese problematischen Legacy-Klassen zu vermeiden.
Moderner Ansatz: Es gibt zwei Hauptrouten:
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:
// 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 nach Möglichkeit 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3