멋사 부트캠프/JDBC
002. JDBC with Mysql
cTosMaster
2025. 4. 7. 18:06
1. 기본 DB Connect
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private static final String URL = "jdbc:mysql://localhost:3306/yourdb?serverTimezone=UTC";
private static final String USER = "yourUsername";
private static final String PASSWORD = "yourPassword";
public static Connection getConnection() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
return DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
return null;
}
}
}
// 위의 사항을 별도의 클래스로 만들어 재사용성 확보
// getConnect() 함수는 자주 호출되는 함수라 굳이 동적할당 하지 않음(메모리 낭비, 불편)
2. 기본 DB 조회 클래스
import java.sql.preparedStatement;
public List<Employee> getEmployeesByDept(Connection conn, String deptName) {
List<Employee> employees = new ArrayList<>();
String sql = "SELECT id, name, dept FROM emp WHERE dept = ?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, deptName);
try (ResultSet rs = pstmt.executeQuery()) {
while (rs.next()) {
Employee emp = new Employee();
emp.setId(rs.getInt("id"));
emp.setName(rs.getString("name"));
emp.setDept(rs.getString("dept"));
employees.add(emp);
} // ← 여기서 pstmt.close() 자동 호출됨(try-with-resources)
}
}
catch (SQLException e) {
e.printStackTrace();
}
return employees;
}
// 여기에서 try-with-resources 문법을 사용했기 때문에 finally 블록이 따로 필요없음
// 추가로 try-with-resources를 사용하지 않을 경우, 나중에 한번에 처리하는 메서드를 활용해도 무방
/*
public static void closeAll(Connection conn, PreparedStatement pstmt, ResultSet rs) {
try { if (rs != null) rs.close(); } catch (Exception e) {}
try { if (pstmt != null) pstmt.close(); } catch (Exception e) {}
try { if (conn != null) conn.close(); } catch (Exception e) {}
}
*/
3.