webprogr.ru Новости

RSS

{{toodo.preview}}

...
{{toodo.name}}

{{toodo.preview}}

далее..

{{toodo.preview}}

{{toodo.name}}

{{toodo.preview}}

смотреть..

toodo.name

{{toodo.preview}}

{{toodo.name}}

{{toodo.preview}}

перейти...

{{toodo.preview}}

...
{{toodo.name}}

{{toodo.preview}}

далее..

{{toodo.preview}}

{{toodo.name}}

{{toodo.preview}}

смотреть..

toodo.name

{{toodo.preview}}

{{toodo.name}}

{{toodo.preview}}

перейти...


Последние новости

типичный шаблон кода JDBC,

Рассмотрим типичный шаблон кода JDBC, соединяющегося с базой данных и выполняющего запрос:
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "postgres";
String password = "secret";
// Автоматически закроет conn, stmt, rs в конце блока try
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement stmt = conn.prepareStatement("SELECT name, email FROM users WHERE id = ?")) {
stmt.setInt(1, 42); // подставляем значение параметра вместо "?"
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
String name = rs.getString("name");
String email = rs.getString("email");
System.out.println(name + " -> " + email);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
В этом примере демонстрируются все основные шаги:
Подключение к базе mydb на PostgreSQL сервере (URL включает протокол jdbc:postgresql://, адрес и имя БД). Если драйвер PostgreSQL присутствует в зависимостях, DriverManager найдёт его и установит соединение.
Создание PreparedStatement с параметром ?. SQL задаётся с placeholder, затем значение устанавливается методом setInt.
Выполнение запроса методом executeQuery(). Для INSERT/UPDATE/DELETE применяется executeUpdate(), который возвращает число изменённых строк, а для произвольного SQL можно использовать stmt.execute().
Обработка ResultSet: цикл while (rs.next()) читает по строке. Методы rs.getString("name") и rs.getString("email") получают значения двух столбцов текущей строки.
Автоматическое закрытие: благодаря конструкции try-with-resources, Connection, PreparedStatement и ResultSet будут закрыты автоматически по выходе из блока, даже если случится исключение. Это современный подход, который значительно уменьшает вероятность утечки ресурсов (не закрытых соединений).
Обратите внимание на строку получения соединения. Параметры — URL, имя пользователя, пароль. В URL обычно кодируется протокол JDBC и субпротокол (название СУБД), хост, порт и имя базы. Формат зависит от драйвера: для MySQL это jdbc:mysql://host:port/dbname, для SQLite (файловая) — jdbc:sqlite:filepath, для Oracle – jdbc:oracle:thin:@host:port:SID или похожие варианты.
Также, никогда не храните пароли прямо в коде – в реальных приложениях их выносят в настройки. В среде Spring Boot, например, URL, имя пользователя и пароль задаются в application.properties и считываются автоматически.
JDBC-драйверы и управление подключениями
JDBC-драйвер – отдельный .jar-файл, поставляемый разработчиком СУБД (или третьей стороной), реализующий интерфейс java.sql.Driver. Необходим для каждого вида базы данных (Oracle, MySQL/MariaDB, PostgreSQL, MS SQL Server, etc.).
Регистрация драйвера: происходит автоматически при загрузке драйвера в класс-путь (механизм Service Provider). Ручное Class.forName("DriverClassName") обычно не требуется, если используете JDBC 4.0+ и драйвер корректно реализует авто-регистрацию.
DriverManager vs DataSource: В простых приложениях можно использовать DriverManager.getConnection(). В более сложных или корпоративных приложениях предпочтительно получать соединения через интерфейс DataSource – это позволяет использовать пул соединений и гибко настраивать источник данных (JNDI и прочее).
Формат URL: Всегда начинается с jdbc:, затем имя драйвера и специфичная часть. Примеры:
jdbc:h2:mem:test (H2, в памяти),
jdbc:mysql://localhost:3306/testdb (MySQL),
jdbc:sqlserver://localhost;databaseName=TestDB (MS SQL Server).
Рейтинг@Mail.ru