(7) 행 집

2804 단어
더 읽 기
RowSet 은 ResultSet 인 터 페 이 스 를 계승 하 였 으 나 데이터베이스 와 의 연결 을 계속 유지 할 필요 가 없다.1. 응용 장면: (1) 스크롤 가능 한 결과 집합 은 항상 데이터 베이스 와 연결 해 야 합 니 다.아무런 조작 도 하지 않 아 도 데이터베이스 연결 을 차지 하고 데이터베이스 연결 은 희귀 자원 에 속한다.이런 상황 에서 우 리 는 행 집 을 사용 할 수 있다.(2) RowSet 은 검색 결 과 를 복잡 한 응용 층 으로 이동 하 는 데 도 적합 하 다.ResultSet 결과 집합 데이터 구조 가 방대 하고 데이터베이스 연결 에 의존 하기 때문이다.2. RowSet 은 다음 과 같은 인 터 페 이 스 를 실현 합 니 다. (1) CachedRowSet 은 연결 이 끊 긴 상태 에서 관련 작업 을 수행 할 수 있 습 니 다.(2) WebRowSet 대상 은 XML 파일 로 저장 할 수 있 는 캐 시 된 줄 집합 을 대표 합 니 다.이 파일 은 웹 애플 리 케 이 션 의 다른 층 으로 이동 할 수 있 으 며, 이 층 에서 WebRowSet 을 사용 하여 파일 을 다시 열 면 된다.(3) Filtered RowSet 과 JoinRowSet 인 터 페 이 스 는 줄 집합 에 대한 경량급 작업 을 지원 합 니 다. 이것 은 SQL 의 SELECT 와 JOIN 작업 과 같 습 니 다.상기 두 인터페이스의 조작 대상 은 줄 에 집 중 된 데 이 터 를 저장 하기 때문에 실행 할 때 데이터베이스 연결 을 만 들 필요 가 없다.(4) JdbcRowSet 은 ResultSet 의 마른 포장 기 입 니 다.이것 은 RowSet 에서 get 방법 과 set 방법 을 계승 하여 결과 집합 을 'bean' 으로 변환 합 니 다.상기 인터페이스의 참 고 는 현재 com. sun. rowset 패키지 에서 모두 Impl 로 끝 납 니 다. 예 를 들 어 CachedRow SetImpl 3. 캐 시 된 줄 집합 은 캐 시 된 줄 집합 에 모든 데 이 터 를 포함 합 니 다.CachedRowSet 은 ResultSet 인터페이스의 하위 인터페이스 입 니 다.그래서 ResultSet 의 API 를 사용 할 수 있 습 니 다.캐 시 된 줄 집합 의 장점: 데이터 베 이 스 를 끊 은 후에 도 연결 은 줄 집합 을 사용 할 수 있 습 니 다.(1) 결과 집합 을 사용 하여 CachedRowSet 대상 을 채 웁 니 다.
import javax.sql.rowset.CachedRowSet;
ResultSet result = stat.getResultSet();
CachedRowSet crs = new com.sun.rowset.CachedRowSetImpl();
crs.populate(result);
result.isAfterLast() //true  populate  ResultSet            
conn.close();

 
(2) CachedRowSet 대상 을 통 해 데이터베이스 연결 자동 생 성
crs.setUrl("jdbc:derby://localhost:1527/COREJAVA;create=true");
crs.setUsername("dbuser");
crs.setPassword("12345678");
//           
crs.setCommand("SELECT * FROM test_table where name=?");
crs.setString(1, "a");
//   CachedRowSet       
crs.setPageSize(20);
//          
crs.execute();
//       
crs.nextPage();

 
메모: MySQL 에서 제공 하 는 Driver 는 CachedRowSet 을 통 해 데이터베이스 연결 을 만 드 는 것 을 지원 하지 않 습 니 다 (3) 줄 집합 을 통 해 데 이 터 를 수정 하 는 방법 이상 의 방법 으로 결과 집합 과 같은 명령 으로 줄 집중 데 이 터 를 보고 수정 할 수 있 습 니 다. 줄 집중 내용 을 수정 하면 crs. acceptChanges (conn) 또는 crs. acceptChanges () 를 호출 하여 데이터베이스 에 수정 합 니 다.두 번 째 방법 은 데이터 베 이 스 를 연결 하 는 데 필요 한 정 보 를 줄 에 집중 적 으로 설정 할 때 만 호출 할 수 있다.주의: 1) 모든 결과 집합 이 업데이트 가능 한 것 은 아니 기 때문에 복잡 한 조회 결과 라면 행 집합 데이터 의 수정 을 데이터베이스 에 다시 쓸 수 없습니다.같은 표 에서 왔 다 면 안전하게 데 이 터 를 쓸 수 있 었 을 것 이다.2) 결 과 를 사용 하여 데 이 터 를 채 우 면 줄 집합 은 업데이트 할 데이터 의 데이터베이스 테이블 이름 을 알 수 없 으 며, setTable 방법 으로 테이블 이름 을 설정 해 야 합 니 다.3) 제출 시 행 집회 검사 줄 에 집 중 된 원본 값 이 현재 데이터베이스 값 과 일치 하 는 지 확인 합 니 다. 일치 하면 수 정 된 결과 에 따라 데이터베이스 에 있 는 데 이 터 를 덮어 씁 니 다. 그렇지 않 으 면 SyncProvider Exception 이상 을 던 지고 데이터베이스 에 값 을 쓰 지 않 습 니 다.

좋은 웹페이지 즐겨찾기