⭐JDBC 구성 요소
Driver 특정 데이터베이스와의 연결을 처리하는 인터페이스 구현.
DriverManager JDBC 드라이버를 관리하고 데이터베이스 연결을 설정.
Connection 데이터베이스와의 세션을 나타냄.
Statement SQL 쿼리를 실행.
ResultSet 쿼리 결과를 저장하고 탐색.
SQLException JDBC 작업 중 발생하는 예외 처리.
⭐Driver (jdbc가 대체)
특정 데이터베이스와의 연결을 처리
데이터베이스 연결 설정, SQL 쿼리 실행 지원
⭐ DriverManager
JDBC 드라이버를 관리하고 데이터베이스 연결을 설정하는 클래스
url, user, password 기반으로 적절한 드라이버를 찾아 Connection 객체를 반환
⭐ Connection
데이터베이스와의 세션을 나타내는 객체
⭐ Statement
SQL 쿼리를 데이터베이스에 전송하는 데 사용
executeQuery()
executeUpdate()
⭐ ResultSet
쿼리 실행 결과를 저장하는 객체
데이터를 행 단위로 탐색하고 열 값을 읽음
⭐ SQLException
JDBC 작업 중 발생하는 예외를 처리
예제)
package ch02;
import java.sql.*;
/**
5.14
jdbc 활용
*/
public class JdbcExample {
public static void main(String[] args) {
//데이터베이스 접근 주소
//String url = "jdbc:mysql://127.0.0.1";
String url = "jdbc:mysql://localhost:3306/school?serverTimezone=Asia/Seoul";
String user = "root";
String pass = "asd1234";
//jdbc를 쓰기 위해 필요한 클래스(구성요소)
Connection conn = null;
Statement stmt = null;
ResultSet rsts = null;
//실행
try {
//1.데이터베이스 연결 요청
conn = DriverManager.getConnection(url,user,pass);
System.out.println("mysql db 연결 성공");
//2.스테이트먼트 생성
stmt = conn.createStatement();
//2-1.쿼리 실행해보기
//rsts = stmt.executeQuery("select * from tb_student where no = 20170001");
rsts = stmt.executeQuery("select * from tb_student");
//3.결과 실행
while (rsts.next()) {
String no = rsts.getString("no");
String name = rsts.getString("name");
String gender = rsts.getString("gender");
int age = rsts.getInt("age");
System.out.print("no:"+no +"\t");
System.out.print("name:"+name +"\t");
System.out.print("gender:"+gender +"\t");
System.out.print("age:"+age +"\n");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//jdbc를 쓰면 db에서 자원을 얻기 위해 대기하는 문제가 생긴다.
//4.자원 해제 - 역순으로
try {
//ResultSet 종료
rsts.close();
//Statement 종료
stmt.close();
//Connection 종료
conn.close();
} catch (SQLException e) {
System.out.println("자원해제 중 오류:"+e.getMessage());
}
}
}//main
}//class
예제2)
package _my;
import java.sql.*;
public class MyJdbcTest {
public static void main(String[] args) {
//접근주소
String url = "jdbc:mysql://localhost:3306/employees?serverTimezone=Asia/Seoul";
String user = "root";
String pass = "asd1234";
//클래스
Connection conn = null;
Statement stmt = null;
ResultSet rsts = null;
//실행
try {
//1.커넥션
conn = DriverManager.getConnection(url, user, pass);
//2.스테이트먼트
stmt = conn.createStatement();
//3.리절트셋
rsts = stmt.executeQuery("select e.emp_no, e.first_name, e.last_name, s.salary" +
" from employees as e" +
" join salaries as s on e.emp_no = s.emp_no" +
" where (e.hire_date - e.birth_date) < 210000 and s.to_date = '9999-01-01'");
//결과 실행
while (rsts.next()) {
int emp_no = rsts.getInt("e.emp_no");
String first_name = rsts.getString("e.first_name");
String last_name = rsts.getString("e.last_name");
int salary = rsts.getInt("s.salary");
System.out.print(emp_no +"\t");
System.out.print(first_name +"\t");
System.out.print(last_name +"\t");
System.out.print(salary +"\t");
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//자원 해제 - 역순으로
try {
rsts.close();
stmt.close();
conn.close();
} catch (SQLException e) {
System.out.println("자원해제 중 오류:" + e.getMessage());
}
}
}//main
}//class
'Java' 카테고리의 다른 글
java 팀플 '학원 수강관리 프로그램' 에러관리 (0) | 2025.05.26 |
---|---|
Java.time, 시간과 관련된 클래스들의 모음 (0) | 2025.05.14 |
래퍼클래스 WrapperClass, 데이터를 객체로 취급하고 싶다면 (0) | 2025.05.12 |
JDBC, 자바와 SQL 징검다리 (0) | 2025.05.12 |
[인텔리제이] lombok, JDBC 라이브러리 추가 방법 (0) | 2025.05.12 |