TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #821 3.28K
🤔 Как закрыть соединение с базой данных?

Закрытие соединения с базой данных и связанных ресурсов (таких как ResultSet и Statement) важно для освобождения ресурсов и предотвращения утечек памяти.

🚩Этапы закрытия соединения

1⃣Закрытие ResultSet
interface IRepository {
doSomething(): void;
}

class Repository implements IRepository {
doSomething() {
console.log("Doing something...");
}
}

class Service {
private repository: IRepository;

constructor(repository: IRepository) {
this.repository = repository;
}

performAction() {
this.repository.doSomething();
}
}

const repository = new Repository();
const service = new Service(repository);
service.performAction();


2⃣Закрытие Statement или PreparedStatement
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}


3⃣Закрытие Connection
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}


🚩Полный пример кода

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class CloseConnectionExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "myusername";
String password = "mypassword";

Connection connection = null;
PreparedStatement pstmt = null;
ResultSet rs = null;

try {
// Установка соединения с базой данных
connection = DriverManager.getConnection(url, username, password);

// Создание PreparedStatement и выполнение запроса
String sql = "SELECT * FROM employees WHERE department = ?";
pstmt = connection.prepareStatement(sql);
pstmt.setString(1, "HR");
rs = pstmt.executeQuery();

// Обработка результатов
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
double salary = rs.getDouble("salary");
System.out.println("ID: " + id + ", Name: " + name + ", Salary: " + salary);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// Закрытие ресурсов
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 6
  • 🤯 1
More from @easy_java_ru
  1. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  2. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
  3. Oct 8, 2026Post #2955
  4. Oct 8, 2026🤔 Что такое поток "демон"? Демон-поток — это поток, который: - Работает на фоне (например…
  5. Oct 7, 2026🤔 Может ли Entity-класс быть абстрактным? Да, Entity может быть абстрактным, если он служ…
  6. Oct 7, 2026🤔 К какой категории сущности относится Primary Key? Primary Key (первичный ключ) в базах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →