ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • RDB
    DB 2018. 7. 31. 17:07
    반응형

    RDB ->  데이터가 서로 관계가 있는 DB형태
    Table - 데이터가 저장될 형태


    Colum - 테이블에 들어갈 데이터 목록, 열

    Row - 행, Colum에 들어가는 데이터, 레코드, 행이 아닌 Row라고 부른다.


    Primary Key (PK)  - 하나이상의 키, 테이블의 한 Row를 대표하는 키, Null값이 올 수 없다.

                        중복검사를 한다. 중복되면 안된다.

                        특정 행을 참조하기 위해 사용된다.

                        PK없이는 특정 행을 업데이트하거나 삭제하는것이 힘들다.


    Foriegn Key (FK) -  외부 테이블에서 오는 키, 다른 테이블에서의 PK를 참조한다.


    SQL - CRUD -> Create, Read, Update, Delete


    Create -> Insert into

    Read -> Select

    Update -> Update set

    Delete -> Delete



    SELECT 하고 Tab으로 여백 맞추기


    DAO - Data Access Object -> 데이터에 접근하는 오브젝트

    1. DB에 접근한다.

    2. Query 준비 및 실행

    3. Query 결과 출력



    package com.ktds;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;

    public class HRDao {

        public static void main(String[] args) {
            new HRDao().run();
        }
        
        public void run() {
            
            /*
             * DB에 접근해 EMPLOYEES 테이블의 정보를 출력한다.
             */
            
            // 1. DB에 접근한다.
            
            // 오라클에 접근하기 위한 객체 Load
            try {
                // Exception
                Class.forName("oracle.jdbc.driver.OracleDriver");
            } catch (ClassNotFoundException e) {
                System.out.println( e.getMessage() );
            }
            
            // Oracle 접속
            Connection conn = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
            try {
                conn = DriverManager.getConnection(
                                    "jdbc:oracle:thin:@localhost:1521:XE" // DB에 접근하기 위한 url
                                    , "DB_ID"
                                    , "DB_PW");
                
                // 2. Query 준비 및 실행
                
                // Query만 적는다. 세미콜론 제외
                // Query를 만들어서 DB한테 요청해주는 역할
                pstmt = conn.prepareStatement("SELECT * FROM EMPLOYEES");
                
                // 3. Query 결과 출력
                rs = pstmt.executeQuery();
                
                // 결과 출력
                while ( rs.next() ) {
                    int employeeID = rs.getInt("EMPLOYEE_ID");
                    String firstName = rs.getString("FIRST_NAME");
                    String lastName = rs.getString("LAST_NAME");
                    String hireDate = rs.getString("HIRE_DATE");
                    double commissionPct = rs.getDouble("COMMISSION_PCT");
                    
                    System.out.printf("%d, %s, %s, %s, %f\n",
                            employeeID,
                            firstName,
                            lastName,
                            hireDate,
                            commissionPct);
                }
            } catch (SQLException e) {
                System.out.println( e.getMessage() );
            }
            
            
        }

    }

    // 메모리 누수 문제가 있다.



    연결을 끊지 않는 이상 메모리가 계속 쌓인다.

    연결을 하고 볼일을 다 봤으면 연결을 끊어야 한다.

    그래서 catch이후에 finally에 코드를 작성한다.


    package com.ktds;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;

    public class HRDao {

        public static void main(String[] args) {
            new HRDao().run();
        }
        
        public void run() {
            
            /*
             * DB에 접근해 EMPLOYEES 테이블의 정보를 출력한다.
             */
            
            // 1. DB에 접근한다.
            
            // 오라클에 접근하기 위한 객체 Load
            try {
                // Exception
                Class.forName("oracle.jdbc.driver.OracleDriver");
            } catch (ClassNotFoundException e) {
                System.out.println( e.getMessage() );
            }
            
            // Oracle 접속
            Connection conn = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
            try {
                conn = DriverManager.getConnection(
                                    "jdbc:oracle:thin:@localhost:1521:XE" // DB에 접근하기 위한 url
                                    , "HR"
                                    , "alqaeda7");
                
                // 2. Query 준비 및 실행
                
                // Query만 적는다. 세미콜론 제외
                // Query를 만들어서 DB한테 요청해주는 역할
                pstmt = conn.prepareStatement("SELECT * FROM EMPLOYEES");
                
                // 3. Query 결과 출력
                rs = pstmt.executeQuery();
                
                // 결과 출력
                while ( rs.next() ) {
                    int employeeID = rs.getInt("EMPLOYEE_ID");
                    String firstName = rs.getString("FIRST_NAME");
                    String lastName = rs.getString("LAST_NAME");
                    String hireDate = rs.getString("HIRE_DATE");
                    double commissionPct = rs.getDouble("COMMISSION_PCT");
                    
                    System.out.printf("%d, %s, %s, %s, %f\n",
                            employeeID,
                            firstName,
                            lastName,
                            hireDate,
                            commissionPct);
                }
            } catch (SQLException e) {
                System.out.println( e.getMessage() );
            } finally {
                // 연결을 하고 있다면
                // DB 연결 해제 - DB를 연 역순으로 close
                if ( rs != null ) {
                    try {
                        // DB 연결 해제
                        rs.close();
                    } catch (SQLException e) {}
                }
                
                if ( pstmt != null ) {
                    try {
                        // DB 연결 해제
                        pstmt.close();
                    } catch (SQLException e) {}
                }
                
                if ( conn != null ) {
                    try {
                        // DB 연결 해제
                        conn.close();
                    } catch (SQLException e) {}
                }
            }
            
        }

    }


    반응형

    'DB' 카테고리의 다른 글

    MySQL Driver  (0) 2018.08.28
    DB Study2 - Ariticle  (0) 2018.08.10
    Java, DB 작성 - DB Study  (0) 2018.08.10
    INSERT - COMMIT, ROLLBACK  (0) 2018.08.08
    요구사항 설계 - 테이블 설계  (0) 2018.08.07

    댓글

Designed by Tistory.