⭐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

20세 입사자 명단 1159명 명단(사번,이름,성,연봉) 출력

+ Recent posts