Умные объекты, а не тупые струны
Хватит крутить колеса, манипулируя струнами.Используйте объекты при взаимодействии с вашей базой данных.
Никогда не используйте Date
или SimpleDateFormat
.Используйте только java.time классы.
Начиная с JDBC 4.2 , мы можем напрямую обмениваться некоторыми типами java.time с базой данных.
Сначала проанализируйте введенную строку.
String input = "01/23/2019";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM/dd/uuuu" ) ;
LocalDate ld = LocalDate.parse( input , f ) ;
Передайте через заполнитель ?
в подготовленном выражении.
myPreparedStatement.setObject( … , ld ) ;
Извлечение.
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
Все это уже много раз освещалось на Stack Exchange.Поиск, чтобы узнать больше.
О java.time
Встроенный фреймворк java.time Ява 8 и позже.Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
Вы можете обмениваться java.time объектами напрямую с вашей базой данных.Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии.Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
ThreeTen-Extra Проект расширяет java.time дополнительными классами.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .