JAVA · 파일/IO
JDBC 심화
JDBC로 데이터베이스를 안전하고 효율적으로 다루는 방법입니다.
파일/IO중급JDBCPreparedStatementSQL데이터베이스
핵심 설명
JDBC로 데이터베이스를 안전하고 효율적으로 다루는 방법입니다.
Java code
import java.sql.*;
public class JDBCAdvanced {
public static void main(String[] args) {
String url = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1";
try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement()) {
// 테이블 생성
stmt.execute(
"CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100))");
// PreparedStatement — SQL 인젝션 방지
String sql = "INSERT INTO users (id, name, email) VALUES (?, ?, ?)";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setInt(1, 1);
ps.setString(2, "홍길동");
ps.setString(3, "hong@test.com");
ps.executeUpdate();
// 배치 삽입
for (int i = 2; i <= 5; i++) {
ps.setInt(1, i);
ps.setString(2, "사용자" + i);
ps.setString(3, "user" + i + "@test.com");
ps.addBatch();
}
int[] counts = ps.executeBatch();
}
// 조회
try (ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {
while (rs.next()) {
System.out.printf("ID:%d, 이름:%s, 이메일:%s%n",
rs.getInt("id"),
rs.getString("name"),
rs.getString("email"));
}
}
} catch (SQLException e) {
System.err.println("SQL 에러: " + e.getMessage());
}
}
}학습 팁
반드시 PreparedStatement를 사용하세요. 문자열 연결로 SQL을 만들면 SQL 인젝션 공격에 노출됩니다.
주의할 점
Connection, Statement, ResultSet을 닫지 않으면 커넥션 풀이 고갈됩니다. try-with-resources를 사용하세요.
자주 묻는 질문
JDBC 심화란 무엇인가요?
JDBC로 데이터베이스를 안전하고 효율적으로 다루는 방법입니다.
JDBC 심화 학습 시 주의할 점은 무엇인가요?
Connection , Statement , ResultSet 을 닫지 않으면 커넥션 풀이 고갈됩니다. try-with-resources를 사용하세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.