ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JDBC - ResultSet
    비전공자 공부일기/:: DB - SQL 2019. 5. 31. 19:16

    Statement.executeUpdate(DML) >> int 반환

     

    Statement.executeQuery(DQL) >> ResultSet 반환 >> 명령을 전달하여 실행시키는 메소드

    - ResultSet : 검색행을 저장하기 위한 인스턴스 정보
    - SELECT 명령은 Statement.executeQuery() 메소드로 전달하여 실행
                   => 검색결과를 ResultSet 인스턴스에 저장하여 반환
    - ResultSet 인스턴스에 저장된 검색결과는 행(Row) 단위로 처리하기 위한 커서(Cursor)를 사용
                   => 최초 커서의 위치는 BOF(Before Of File) 영역에 있음
    - ResultSet.next() : 커서를 아래로 이동하는 메소드 - 커서 위치의 행 처리
                   => boolean 반환 : false(커서위치에 처리행이 없는 경우=커서가 EOF 영역에 위치한 경우),
                                             true(커서위치에 행이 존재할 때)

     

    < ResultSet >

    - ResultSet.getXXX(int columnIndex 또는 String columnName) 
         => 커서가 위치한 처리행에서 원하는 컬럼값을 반환하는 메소드
         => XXX에는 컬럼값을 반환받기 위한 Java 자료형이 들어감
         => columnIndesx : 검색대상의 위치값(1부터 1씩 증가되는 값 사용)
         => getXXX() : 커서의 위치에 있는 컬럼값을 반환하는 메소드
         => 모든 컬럼값은 문자열(String)로 반환받아 저장 가능 
         => 따라서 컬럼의 자료형이 명확하지 않으면 일단 String으로 받아오면 됨!(필요하면 나중에 형변환) 
         => 컬럼값은 하나하나씩 뽑아내야 한다 ==> '패치'라고 부름

    - ** next() : 커서가 BOF(Begin Of File)에서 시작해 EOF(End Of File)에 닿을 때까지 이동하며 커서 위치에 행이 존재하는지 판단하여, boolean값을 반환하는 메소드

     

    Connection.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability)
       : Statement 인스턴스를 생성하여 반환하는 메소드
       => SELECT 명령을 전달하여 반환되는 ResultSet 인스턴스의 속성변경


    - ResultSetType : ResultSet 인스턴스의 커서이동 관련 속성변경
    - ResultSet.TYPE_FORWARD_ONLY : 커서를 아래행으로만 이동(기본)
    - ResultSet.TYPE_SCROLL_INSENSITIVE : 커서를 원하는 행으로 이동 - 조작행 미반영
    - ResultSet.TYPE_SCROLL_SENSITIVE : 커서를 원하는 행으로 이동 - 조작행 반영
    - ResultSet.TYPE_CONCUR_READ_ONLY : 처리행의 조작 불가능 
    - ResultSet.TYPE_CONCUR_UPDATABLE : 처리행의 조작 가능

    Result.first() : 커서를 첫번째 행으로 이동하는 메소드
    Result.last() : 커서를 첫번째 행으로 이동하는 메소드
    ResultSet.absolute(int rowIndex) : 전달받은 행위치로 커서를 이동하는 메소드
    ResultSet.previous() : 커서를 이전행으로 이동하는 메소드
    ResultSet.beforeFirst() : 커서를 BOF영역 이동하는 메소드
    ResultSet.moveToInsertRow() : 커서 위치에 새로운 행을 생성하는 메소드
                                                 => 기존 행들은 자동으로 뒤로 이동
    Result.updateXXX(String columnName, Object value) : 커서위치 처리행의 컬럼값을 변경하는 메소드
    - ResultSet.InsertRow() : 커서 위치에 새로운 행을 삽입하는 메소드(insert와 같은 효과)

     

    < ResultSetMetaData >

    - MetaData : 사진이 데이터라고 한다면, 메타데이터는 사진이 찍힌 날짜, 장소, 크기 등의
                     부가적인 데이터 or 보조적인 데이터를 뜻한다.
    - ResultSetMetaData 인스턴스 : ResultSet 인스턴스에 저장된 검색결과에 대한 부가적인 정보를 저장하는 인스턴스

    ResultSet.getMetaData() : 검색결과에 대한 부가적인 정보를 저장한 ResultSetMetaData 인스턴스를 반환하는 메소드
    - ResultSetMetaData.getColumnCount() : 검색결과의 컬럼갯수를 반환하는 메소드
    - ResultSetMetaData.getColumnLabel(int columnIndex) : columnIndex 위치의 컬럼명을 반환하는 메소드
    ResultSetMetaData.isNullable(int columnIndex) : columnIndex 위치의 컬럼에 대한 NULL 허용 유무값(0 또는 1)을 반환하는 메소드
    - ResultSetMetaData.getColumnTypeName(int columnIndex) : columnIndex 위치의 컬럼 자료형을 반환하는 메소드
    ResultSetMetaData.getColumnDisplaySize(int columnIndex) : columnIndex 위치의 컬럼에 대한 출력크기를 반환하는 메소드
    - ResultSetMetaData.getColumnClassName(int columnIndex) : columnIndex 위치의 컬럼에 대한 Java 자료형(클래스)을 반환하는 메소드

    < ConnectionFactory >

    : Connection 인스턴스를 생성하여 반환하는 기능 및 제거 기능을 제공하기 위한 클래스
       => JDBC 프로그램 작성에 필요한 명령들을 메소드로 제공
       => 프로그램의 생산성 향상 및 유지보수의 효율성 증가 --- 정석이 아니라 편법
       => "핵심관심코드"라고 하는, 추상화 규칙을 위반한 방법을 사용하므로 권장할 만한 방법은 아니다.

    댓글

coding wanee