25. JAVA JDBC (Java Database Connectivity) - 3

2020. 6. 8. 16:55·개발/JAVA
728x90
반응형

1. 동적 커서 정의

- JDBC 2.0 부터는 ResultSet 의 커서가 원하는 위치대로 이동 가능한 커서.

(이용하려면 stmt, pstmt 생성시 아래의 방법으로 옵션을 줌.)

 

2. 방법

con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_UPDATABLE);

Statement createStatement(int resultSetType,int resultSetConcurrency)

throws SQLException

 

(1) resultSetType

1) ResultSet.TYPE_FORWARD_ONLY,

2) ResultSet.TYPE_SCROLL_INSENSITIVE,

3) ResultSet.TYPE_SCROLL_SENSITIVE

 

(2) resultSetConcurrency

1) ResultSet.CONCUR_READ_ONLY

2) ResultSet.CONCUR_UPDATABLE */

 

3. 주요 ResultSet 의 커서 이동 메소드

(1) rs.next(); //커서를 한칸씩 내림

(2) rs.previous(); //커서를 한칸씩 올림

(3) rs.beforeFirst(); //커서를 BOF에 위치

(4) rs.afterLast(); // 커서를 EOF에 위치


import java.sql.*;

class C {
	Connection con;
	String url = "jdbc:oracle:thin:@61.81.98.62:1521:JAVA";	// localhost or 127.0.0.1
	Statement stmt;
	ResultSet rs;
	ResultSetMetaData rsmd;

	C() {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			con = DriverManager.getConnection(url, "scott", "tiger");
			// 커서의 기본값: 	TYPE_FORWARD_ONLY
			stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
			select();
			System.out.print("\n\n");
			reverse();
			closeAll();
		} catch(ClassNotFoundException cnfe) {
			System.out.println(cnfe.toString());
		} catch(SQLException se) {
			System.out.println(se.toString());
		}
	}

	void select() {
		try {
			String sql = "select * from JDBCT";
			rs = stmt.executeQuery(sql);
			rsmd = rs.getMetaData();
			int colCnt = rsmd.getColumnCount();
			for(int i=1; i<=colCnt; i++) {
				String colName = rsmd.getColumnName(i);
				System.out.print(colName+"\t");
			}
			System.out.println("\n-------------------------");
			// cursor => BOF -> EOF
			while(rs.next()) {
				int no = rs.getInt(1);
				String name = rs.getString(2);
				String addr = rs.getString(3);
				System.out.println(no + "\t" + name + "\t" + addr);
			}
		}  catch(SQLException se){
			System.out.println(se.toString());
		}
	}

	void reverse() {
		try {
			String sql = "select * from JDBCT";
			rs = stmt.executeQuery(sql);
			rsmd = rs.getMetaData();
			int colCnt = rsmd.getColumnCount();
			for(int i=1; i<=colCnt; i++) {
				String colName = rsmd.getColumnName(i);
				System.out.print(colName+"\t");
			}
			System.out.println("\n-------------------------");
			// cursor => EOF -> BOF
			rs.afterLast();
			while(rs.previous()) {
				int no = rs.getInt(1);
				String name = rs.getString(2);
				String addr = rs.getString(3);
				System.out.println(no + "\t" + name + "\t" + addr);
			}
		}  catch(SQLException se){
			System.out.println(se.toString());
		}
	}

	void closeAll() {
		try {
			if(stmt != null) stmt.close();
			if(con != null) con.close();
		} catch(SQLException se) {}
	}

	public static void main(String[] args) {
		new C();
	}
}

 

728x90
반응형
저작자표시 (새창열림)

'개발 > JAVA' 카테고리의 다른 글

문자열 비교, ==와 equals() 그리고 compareTo()  (0) 2024.05.07
[annotation] @Autowired와 @Qualifier  (0) 2024.04.24
24. JAVA JDBC (Java Database Connectivity) - 2  (0) 2020.06.08
23. JAVA JDBC (Java Database Connectivity) - 1  (0) 2020.06.08
22. JAVA Network 네트워크  (0) 2020.06.08
'개발/JAVA' 카테고리의 다른 글
  • 문자열 비교, ==와 equals() 그리고 compareTo()
  • [annotation] @Autowired와 @Qualifier
  • 24. JAVA JDBC (Java Database Connectivity) - 2
  • 23. JAVA JDBC (Java Database Connectivity) - 1
joolog
joolog
  • joolog
    JOO
    joolog
  • 전체
    오늘
    어제
    • 분류 전체보기 (166) N
      • 개발 (84) N
        • JAVA (30) N
        • PYTHON (9)
        • AWS (15)
        • DOCKER (2)
        • PERCONA (2)
        • ORACLE (14)
        • MYSQL (1)
        • 알고리즘 (0)
        • 기타 (11)
      • 툴 (5)
        • MARKDOWN (1)
        • GIT (1)
        • DOCKER (1)
        • PyCharm (2)
        • IntelliJ (0)
      • 일상 (35)
        • 맛집 (6)
        • 카페 (2)
        • 요리 (4)
        • 글씨 연습 (2)
        • 그저 일상 (7)
        • 내돈 내산 (11)
        • 홍보 (1)
      • 국내 여행 (1)
      • 해외 여행 (15)
        • 체코-오스트리아 (10)
        • 일본 (5)
      • 암 일지 (26)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
    • 티스토리 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오라클
    히로시마
    잘츠부르크
    재발
    갑상선 암
    오닉스 리프3
    자바JDBC
    요양병원
    체코
    성모샘쉼터
    자바
    Oracle
    오스트리아
    mysql
    티스토리챌린지
    jdbc
    글씨연습
    오블완
    저요오드식
    동위원소
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
joolog
25. JAVA JDBC (Java Database Connectivity) - 3
상단으로

티스토리툴바