Comments 12
Примеры кода лучше оформлять именно в виде кода, а не скрина. Да и сами скрины делать желательно делать хотя бы с помощью alt+print screen
Руки бы сегодня отрывать за такие примеры.
Да все в нем не так. Начнем с того, что Connection уже давно (ну лет так 10 наверное уже) рекомендуется получать не из DriverManager, а из DataSource. По разным причинам, например потому, что это обычно пул коннектов, а не один.
Во-вторых, за .close() внутри try — потому что это надо делать внутри finally, и не забывать при этом, что каждый из этих методов сам может кинуть исключение — и эти исключения нужно ловить (хотя обычно можно и не обрабатывать).
В-третьих, начиная с java 7 есть такая штука, как try with resources, и в принципе все ресурсы jdbc относятся к таким, которые могут быть закрыты автоматически.
Короче, тут все неправильно. JDBC уже лет 20 наверное существует, это базовый низкоуровневый механизм. И за это время вокруг понаделали столько хороших удобных высокоуровневых, что начинающим следует пользоваться ими, например Spring JDBC, где вопросы незакрытых ресурсов просто не возникают.
Да, и еще одно, но не самое мелкое — вот такой вот пример класса, который получает коннект к базе внутри себя, и внутри же хранит параметры соединения — это типичный пример класса не тестируемого. Потому что чтобы нормально тестировать это — нужно DataSource инжектить снаружи. Тогда его хотя бы в интеграционных тестах можно будет заменить на другой.
А если еще вспомнить, что у большинства полезных программ база должна настраиваться и не в тестовом режиме — то и подавно, выполнять запросы и настраивать коннект в одном классе — моветон.
Ну и напоследок — select *, да? А потом getString(1), да? И долго будет удивляться тот, кто это станет поддерживать, почему вдруг оно сломалось, от того, что совсем немного изменился набор (или порядок) колонок в таблице.
Честно говоря если вы хотите рассказывать про JDBC, то мне кажется было бы логично более подробно остановится на том как правильно писать запросы и как работать с результатами, а у вас как минимум визуально много отдано под описание интерфейса одной конкретной IDE. Уверен что не все новички именно ей пользуются, и абсолютно точно с jdbc совсем не обязательно именно через эти интнрфейсы работать.
Все очень плохо…
В проекте нет .gitignore'а (папки target
, .idea
и файл *.iml
не должны быть в проекте). Зачем нам знать как вы подключаетесь к базе (пользователи IDEA Ultimate наверняка это знают, пользователям остальных IDE это вряд ли интересно). Уж если делаете пример, то хотя бы напишите DDL таблицы которую используете. Статью можно заменить куском кода из main класса и написать что так делать не надо.
проекте нет .gitignore'а (папки target, .idea и файл *.iml не должны быть в проекте)
если target/
в .gitignore
заносить вполне логично (правда, стоит с аккуратностью потом создавать пакеты с именем target
), то /.idea/
и *.iml
вполне можно внести в глобальный (per user) gitignore, который прописать в git config --global core.excludesfile
.
В остальном — сложно не согласиться с вами ,)
Простой пример JDBC для начинающих