[Web] JDBC


  • JDBC ( Java Database Connectivity) 

자바를 이용한 데이터베이스 접속과 sql 문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약이다. 자바 프로그램 내에서 sql 문을 실행하기 위한 자바 api 이다. java는 표준 인터페이스인 JDBC API를 제공하고있다. 데이터베이스 벤더, 또는 기타 써드파티에서는 JDBC 인터페이스를 구현한 드라이버를 제공한다.


  • JDBC 환경 구성
Maven에 JDBC 드라이버를 설치하기 위해 Maven에 다음과 같은 의존성을 추가한다. 

1
2
3
4
5
<dependency>   
  <groupId>mysql</groupId>   
       <artifactId>mysql-connector-java</artifactId>
       <version>5.1.45</version>
 </dependency>
cs


JDBC Tutorial 참고 : https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html

  • JDBC 클래스의 생성관계
  1. import java.sql.*;
  2. 드라이버 로드
  3. Connection 객체 생성
  4. Statement 객체를 생성 및 질의 수행
  5. ( sql 결과물이 있다면 ) ResultSet 객체를 생성
  6. 모든 객체를 닫는다. 

  • 예제 실습 : connectdb 데이터베이스에 connectuser로 접속해서 role 테이블의 값 출력하기 
0. role 테이블은 role_id ( int), description (varchar) 데이터를 가지고있다.
1. Role 클래스를 생성. roleID, description 변수를 생성하고 생성자와 getter, setter method를 생성한다. 
2. RoleDao 클래스를 생성한다. 


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
32
33
34
35
36
37
38
39
40
public class RoleDao {
    private static String dburl = "jdbc:mysql://localhost:3306/connectdb?useSSL=false";
    private static String dbUser = "connectuser";
    private static String dbpasswd = "1234";
 
    public Role getRole(Integer roleId) {
        Role role = null;
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
 
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
            String sql = "SELECT description,role_id FROM role WHERE role_id = ?";
            // 입력한 role id에 따른 데이터를 출력하기 위해 ? 로 지정
            ps = conn.prepareStatement(sql);
            ps.setInt(1, roleId);
            rs = ps.executeQuery();
 
            if (rs.next()) {
                String description = rs.getString(1);
                int id = rs.getInt("role_id");
                role = new Role(id, description);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            .....
        }
 
        return role;
    }
}
cs





No comments:

Powered by Blogger.