일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- ChatGPT
- 딥러닝
- 디버깅
- 파이썬
- JDBC
- html/css
- 연습문제
- 자바
- JSP
- 자바스크립트
- 머신러닝
- 혼공머신
- 상속
- JSP/Servlet
- 자바스크립트심화
- 중학수학
- 중학1-1
- CSS
- 정보처리기사실기
- 컴퓨터비전
- 정보처리기사필기
- c언어
- 자바 실습
- SQL
- 데이터베이스
- 컴퓨터구조
- rnn
- 개발일기
- 순환신경망
- 데이터분석
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
데이터베이스와 JDBC 5 - 퀴즈로 정리합시다 문제 풀기 본문
퀴즈 문제를 풀어보며 이 단원을 정리해보겠다.
퀴즈로 정리합시다
문제 4번
문제 6번
JDBC 드라이버에 대한 이해를 돕기 위해서 프린터기를 예를 들어보겠다. 우리가 프린터를 구입했다고 하자. 이 프린터를 사용하려면 드라이버를 설치해야 한다. 드라이버는 컴퓨터와 프린터 사이의 의사소통을 위한 프로그램이다. 우리가 사용하려는 JDBC 드라이버도 자바와 오라클이라는 데이터베이스 사이의 의사소통을 위한 프로그램으로 이를 자바에 환경 설정해야만 오라클을 자바에서 사용할 수 있게 된다.
문제 8번
?를 사용하여 파라미터화된 SQL 구문을 작성할 때 사용하는 인터페이스는 PreparedStatement이다.
- Statement는 쿼리를 매번 문자열로 작성해야 하지만, PreparedStatement는 미리 컴파일된 SQL을 재사용할 수 있어 성능과 보안(특히 SQL Injection 방지) 면에서 유리하다.
String query = "INSERT INTO member (name, userid, pwd, email, phone, admin) VALUES (?, ?, ?, ?, ?, ?)";
try (Connection conn = DriverManager.getConnection(url, uid, pass);
PreparedStatement pstmt = conn.prepareStatement(query)) {
pstmt.setString(1, "이소미"); // 1번째 ?에 값 설정
pstmt.setString(2, "somi");
pstmt.setString(3, "1234");
pstmt.setString(4, "gmd@naver.com");
pstmt.setString(5, "010-2362-5157");
pstmt.setInt(6, 0); // 6번째 ?에 값 설정
int rowsInserted = pstmt.executeUpdate(); // 실행
System.out.println(rowsInserted + " row(s) inserted.");
} catch (SQLException e) {
e.printStackTrace();
}
문제 11번
이 문제를 JSP 코드로 직접 작성해보았다.
아직 테이블을 만들지 않아서 오류 문구가 뜨지만 코드 실행은 잘 된다.
문제 12번
답은 javax.sql이다.
해설
- DataSource는 JDBC 2.0에서 추가된 인터페이스로, 커넥션 풀링(Connection Pooling) 및 트랜잭션 관리를 지원한다.
- DataSource는 데이터베이스 연결을 설정하는 고급 방법으로 사용되며, 이 인터페이스를 사용하기 위해서는 javax.sql 패키지를 임포트해야 한다.
javax.sql 패키지 주요 클래스와 인터페이스
- DataSource : 데이터베이스 연결을 관리하는 인터페이스
- ConnectionPoolDataSource : 커넥션 풀링을 지원하기 위한 인터페이스
- RowSet : JDBC의 결과 집합(ResultSet)을 캡슐화한 객체
예제 코드 (DataSource 사용 예시)
import java.sql.*;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
public class DataSourceExample {
public static void main(String[] args) {
// DataSource 설정
BasicDataSource ds = new BasicDataSource();
ds.setUrl("jdbc:oracle:thin:@localhost:1521:XE");
ds.setUsername("SCOTT");
ds.setPassword("tiger");
ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
// 데이터베이스 연결 및 쿼리 실행
try (Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM member")) {
while (rs.next()) {
System.out.println("Name: " + rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
핵심 포인트
- DataSource를 사용할 때는 반드시 javax.sql 패키지를 임포트해야 함
- JDBC API의 확장을 지원하며 커넥션 풀링과 같은 고급 기능을 제공함
문제 14번
문제의 정답은 ① Connection conn = DriverManager.getConnection(url, id, pw);일 가능성이 높다.
Connection conn = DriverManager.getConnection(url, id, pw);는 JDBC에서 데이터베이스 연결을 설정하기 위한 가장 기본적인 API이다.
이는 SQL 실행을 위해 첫 단계에서 필수로 사용된다.
각 선택지 분석
- Connection conn = DriverManager.getConnection(url, id, pw);
- JDBC에서 데이터베이스와 연결을 설정하는 가장 기본적인 API이다.
- SQL 실행을 위해 연결 객체 conn을 생성하는 부분으로 정답 가능성 가장 높음
- Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeUpdate(sql);
- executeUpdate()는 SELECT 문이 아니라 INSERT, UPDATE, DELETE 문과 함께 사용된다.
- SELECT 문을 다룰 때는 executeQuery()를 사용해야 하므로 잘못된 코드이다.
- PreparedStatement pstmt = conn.prepareStatement();
- PreparedStatement는 매우 적합한 API지만, 이 문제는 기본 API 사용 여부를 묻는 질문일 가능성이 높으므로 정답으로 보기는 어렵다.
- ResultSet rs = stmt.executeQuery();
- executeQuery()는 SELECT 문 실행에 사용되지만, 이 코드는 독립적으로 사용될 수 없다.
- 적절한 흐름에서는 Statement 객체와 함께 사용해야 한다.
책에는 정답이 없다고 나오는데 이는 잘못된 것 같다. 내가 쓴 1번 답이 맞은 것이다.
학습을 마치고
퀴즈 문제를 스스로 풀어보는 사이에 JDBC에 대한 이해력이 더 높아진 것 같다. 책을 찾아서 풀기도 하고 내가 생각하는 답안을 쓰기도 했다.
어쨌든 거의 혼자서 풀었다고 할 수 있다.
'웹 · 앱 개발 > JSP & Servlet' 카테고리의 다른 글
데이터베이스를 이용한 회원 관리 시스템 구축하기 1 - 데이터베이스 커넥션 풀 (0) | 2024.12.15 |
---|---|
데이터베이스와 JDBC 6 - 도전 문제 풀기 (0) | 2024.12.15 |
데이터베이스와 JDBC 4 - JDBC를 이용한 데이터 조작하기 4 : 데이터 저장에서 쿼리문 실행까지 (0) | 2024.12.15 |
데이터베이스와 JDBC 3 - JDBC를 이용한 데이터 조작하기 3 : member 테이블 내용 출력 코드 오류 수정하기 (0) | 2024.12.15 |
데이터베이스와 JDBC 2 - JDBC를 이용한 데이터 조작하기 2 : SELECT 문과 Statement, ResultSet 클래스 (0) | 2024.12.15 |