성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و

JDBC Connection 본문

백엔드개발/JDBC

JDBC Connection

hyemi_flora 2023. 11. 13. 11:49

1103 수업내용_

package database;

 

public class J01_JdbcConnection {

        

        /*

                # JDBC (Java Database Connectivity)

                - 자바에서 데이터베이스에 접속하여 쿼리문을 전달하고 결과를 얻어오는 기능들이 구현되어 있는 API

                - 다양한 종류의 DB와 연결할 수 있다

                - 어떤 DB와 연결하더라도 항상 JAVA쪽 소스코드는 동일하게끔 설계

                 -> Java에는 인터페이스만 존재하고 실제 구현은 각 DB회사에게 미룸

      

                # OJDBC (Oracle JDBC)

                - Oracle 데이터베이스가 JDBC API와 소통하기 위해 만들어놓은 라이브럴

                - 오라클 데이터베이스 또는 SQLDeveloper 설치 폴더에 포함되어 있다

 

        # 외부의 라이브러리 프로젝트에 포함시키기

                - 프로젝트 우클릭 -> Properties -> Java Build Path  -> Libraris -> modulepath Add External JARs..

 

탐색기를 열어서 1 또는 2번으로 진행

 

1 : C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib

>>

 

 

또는

 

2 : C:\JavaFullstack_hm\DataBase\sqldeveloper\jdbc\lib

 

 

 

프로젝트에서 위의 ojdbc11.jar 불러다 사용해야한다.

 

 

 

 

ADD External JARs… -> 2번에서 찾은 아이를 등록한다

 

 

 

apply and close

그럼 이렇게 생성됨

 

 

 

 

안에 들어있는 클래스들을 사용하게 것이다.

 

*/

        public static void main(String[] args) {                

 

                // JDBC API의 사용절차

                

                //1. Class.forName()으로 각 회사의 JDBC 드라이버를 한번 로드한다.

                try {

                        Class.forName("oracle.jdbc.driver.OracleDriver");

                        // 오라클 패키지 > jdbc 패키지 > 드라이버 패키지 >OracleDriver 실행시키는것

++>>

 "jdbc:oracle:thin:@localhost:1521:XE"; // localhost 자리는 127.0.0.1이 들어갈 수 있다 >>

"127.0.0.1"은 네트워크 통신에서 사용되는 루프백 주소로 "localhost"라고도 불립니다. 이 주소는 동일한 호스트(즉, 현재 작업 중인 컴퓨터)에 대한 네트워크 연결을 설정하는 데 사용됩니다. 이를 통해 애플리케이션은 동일한 기기에서 실행 중인 네트워크 서비스와 통신할 수 있습니다. "localhost" 또는 "127.0.0.1"을 URL의 호스트로 사용할 때 네트워크를 통한 통신이 아니라 로컬 머신 내에서 통신이 이루어집니다.

예를 들어, 제공된 JDBC URL("jdbc:oracle:thin:@localhost:1521:XE")은 코드가 실행되는 동일한 컴퓨터에서 실행 중인 Oracle 데이터베이스에 연결을 설정하는 것을 나타냅니다. 1521은 포트 번호를 나타내며 XE는 Oracle 서비스 이름입니다.

 

출처: <https://chat.openai.com/c/0820cea0-ab94-4f29-af65-2762847654bb>

 

                        System.out.println("클래스 로딩 성공!");

                } catch (ClassNotFoundException e) {

                        System.out.println("클래스 이름이 틀린 것 같습니다.");

                        e.printStackTrace();

                }

 

 

 

        //2. DriverManager 클래스를 통해 DB에 접속한다 (새 워크시트 접속과 같음)

                DriverManager.getConnection("");

                //"" 부분에 -> sqlDeveloper 에서 주소와 아이디, 비밀번호등등 가져다 쓰는 것

 

==>

 

        try {

                        Connection conn = DriverManager.getConnection(

                                        "jdbc:oracle:thin:@localhost:1521:XE", "hr", "1234");

                        // sqlDeveloper 에서 주소를 가져다 쓰는 것

                        // 워크시트 시작 부분

                        System.out.println("연결성공!" + conn);

                        

                        

                        

                        conn.close();

                        // 사용이 끝난 연결은 반드시 접속을 해제해야 한다

                } catch (SQLException e) {

                        // TODO Auto-generated catch block

                        e.printStackTrace();

                }

                

        }

 

 

==>

 

                //2. DriverManager 클래스를 통해 DB에 접속한다 (새 워크시트 접속과 같음)

                try {

                        Connection conn = DriverManager.getConnection(

                                        "jdbc:oracle:thin:@localhost:1521:XE", "hr", "1234");

                        // sqlDeveloper 에서 주소를 가져다 쓰는 것

                        // 워크시트 시작 부분

                        System.out.println("연결성공!" + conn);

                        

                        //3. 생성된 conn인스턴스를 통해 쿼리문을 전달한다

                        //         (해당 위치에서 쿼리문에 ;을 추가하면 에러가 발생하므로 주의)

                        

                        //[3-1] 쿼리문 준비하기

                        String sql = "SELECT * FROM employees";

                        

                        PreparedStatement pstmt = conn.prepareStatement(sql);

                        

                        //[3-2] 준비된 쿼리문 실행하기 (DB로 전달하기)

                        //           해당 쿼리문의 실행결과는 Set형태로 반환된다

                        ResultSet rs = pstmt.executeQuery();

                        // HashSet의 그 Set 배웠던 Set이다

                        

                        //[3-3] 받아온 결과 사용하기

                        

                        //rs.next() : 커서를 다음행을 넘긴후 true반환. 더 읽을게 없으면 false 반환

                        while(rs.next()) {

                                System.out.printf("%s %s / %d\n",

                                                rs.getString("first_name"),

                                                rs.getString("last_name"),

                                                rs.getInt("salary")

                                                );

                        }

                        // 사용이 끝난 객체를 열었던 반대의 순서로 닫는다.

                        rs.close();

                        pstmt.close();

                        // 사용이 끝난 연결은 반드시 접속을 해제해야 한다        

                        conn.close();

                

                } catch (SQLException e) {

                        // TODO Auto-generated catch block

                        e.printStackTrace();

                }

                

                

이런식으로 db 있는 정보를 가져올 있다.                

        }

 

}

 

'백엔드개발 > JDBC' 카테고리의 다른 글

Meta data  (1) 2023.11.13
Transaction  (0) 2023.11.13
Execute Update  (0) 2023.11.13
Prepare Statement  (0) 2023.11.13
Select QUIZ / DB로부터 모든 사원의 사번/이름/부서명/직책명 읽어 파일형태로 저장하기 /  (0) 2023.11.13