ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JDBC - 작성방법
    카테고리 없음 2019. 5. 30. 20:44

    2019.05.30 필기

     

    < 클래스 로드 >
    1) ClassLoader에 의해 클래스파일을(소스X, 컴파일된 파일) 읽어 메모리에 저장 =로드
        >>jvm이 자동으로 수행 (묵시적) -- 프로그램에서 한 번만 동작(Static 메모리에 저장되므로)
    2) new 연산자로 메모리에 저장된 클래스(차별화를 위해 Clazz라고 부름)의 생성자를 호출하여 인스턴스 생성
        >>개발자가 수동으로 수행 (명시적) >> 생성된 인스턴스를 참조변수에 저장하여 지속적 사용이 가능하도록 만듦
    3) 참조변수에 저장된 인스턴스로 메소드 호출 >> 기능 구현

     

    개념 재정리 :
    - DBMS : 오라클, MySQL 등 DB를 관리하기 위한 시스템

     

    import java.sql.Driver;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.Enumeration;
    
    import oracle.jdbc.driver.OracleDriver;
    
    public class JdbcDriverLoadApp {
    	public static void main(String[] args) {
    //		//Driver 클래스로 인스턴스를 생성하여 JDBC Driver로 등록
    //		// => JDBC Driver : DriverManager 클래스에 등록된 Driver 인스턴스 >> 클래스를 이용하여 DBMS 접속 가능
    //		// DriverManager 클래스 : DBMS 서버에 접속하기 위한 기능을 제공하는 클래스
    //		// 동일한 Driver 인스턴스가 DriverManager 클래스에 등록 - 비효율적(1개만 있으면 되는데 왜 굳이!)
    //		
    //		//1) OracleDriver 클래스로 인스턴스 생성
    //		OracleDriver driver=new OracleDriver();
    //		
    //		//2) Driver 인스턴스를 DriverManager 클래스의 메소드를 이용하여 JDBC 드라이버로 등록
    //		//DriverManager.registerDriver(Driver driver) : Driver 인스턴스를 전달받아 JDBC Driver로 등록하는 메소드
    //		// => SQLException 발생 - 예외처리
    //		try {
    //			DriverManager.registerDriver(driver);
    //		} catch (SQLException e) {
    //			// TODO Auto-generated catch block
    //			e.printStackTrace();
    //		}
    		
    		
    		//OracleDriver 클래스를 문자열로 전달하여 메모리에 로드하여 저장
    		// => Static영역에서 OracleDriver 인스턴스 생성 후 DriverManager 클래스에 JDBC Driver로 등록 - 한번만 실행
    		try {
    			Class.forName("oracle.jdbc.driver.OracleDriver");
    		} catch (ClassNotFoundException e) {
    			System.out.println("OracleDriver클래스를 찾을 수 없습니다.");
    			System.exit(0);
    		}
    		
    		//DriverManager.getDrivers() : DriverManager 클래스에 등록된 JDBC Driver 목록을 반환하는 메소드
    		//Enumeration : 콜렉션 인스턴스의 정보를 제공받아 반복처리 기능을 제공하는 인스턴스
    		Enumeration<Driver> drivers = DriverManager.getDrivers();
    		//Enumeration.hasMoreElements() : Enumeration 인스턴스에 제공 가능한 인스턴스가 존재할 경우 true를 반환하는 메소드
    		while(drivers.hasMoreElements()) {
    			//Enumeration.nextElement() : Enumeration 인스턴스에 저장된 요소를 반환하는 메소드
    			Driver d=drivers.nextElement();
    			System.out.println(d);
    		}
    		System.out.println(drivers.toString());
    	}
    }
    

    <자바-DBMS 연동>

    1. 드라이버 등록

    OracleDriver 클래스를 DriverManager클래스에 등록

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

     

    2. 서버 접속 - Connection

    Protocol:ServerName:Port:ResourcePath 
    Oracle DBMS URL >> jdbc:oracle:thin:(username)@ServerName(또는 IP):1521:SID 
           --- Protocol:ServerName:Port/ResourcePath 간혹 콜론 대신 슬래시로 구분하기도 함(벗! 콜론이 정석)
           --- thin은 접속하겠다는 의미

           --- 1521은 오라클 전용 포트
           --- SID는 보통 XE

    DriverManager.getConnection(String url, String user, String password)
     
    : 서버 접속정보를 전달하여 DBMS 접속 후 접속정보(Connection 인스턴스)를 반환하는 메소드

    - Connection 인스턴스 : DBMS 접속정보를 이용하여 기능을 제공하는 인스턴스
    -  URL : 인터넷에 존재하는 자원을 주소 형식으로 표현하기 위한 방법


    // 1521포트-- / SID -- 데이터베이스의 고유값(XE등)
    // 프로젝트 할때는 localhost 말고 내 컴터주소를 넣는다.

     

    3. 명령문 - Statement

     

     

    4. SQL 전달

    - executeQuery()

    - executeUpdate()

     

    5. 결과처리

     

    ※ResultSet을 이용하면 검색행에 INSERT, UPDATE, DELETE 등도 가능하다

     

    6. JDBC 자원 제거

    ※ 생성순서 반대로 제거!

    try {

    Statement변수.close();

    Connection변수.close();

    } catch { }

    댓글

coding wanee