jdbc resultset 예제

정방향 전용 결과 집합의 행 수를 확인하는 두 번째 방법은 다음 예제에 표시된 각 반복을 사용하여 변수를 증분하여 결과 집합을 반복하는 것입니다. 응용 프로그램은 정방향 전용 결과 집합을 한 번만 반복할 수 있으므로 동일한 쿼리를 두 번 실행해야 합니다. 첫 번째 rs를 통한 반복에서 행 수는 계산됩니다. 두 번째 rs를 통해 반복에서 데이터가 검색됩니다. 이전 예제와 마찬가지로 먼저 명령문에서 가져오기 크기를 10으로 설정합니다. 따라서 처음 3개의 데이터베이스 트립은 각 여정당 10개의 레코드를 로드합니다. 이 예제에서는 두 개의 인수인 ResultSet.TYPE_SCROLL_SENSITIVE 및 결과 집합.CONCUR_UPDATABLE이 있는 Connection.createStatement 메서드를 호출합니다. 첫 번째 값을 사용하면 ResultSet 개체의 커서를 앞뒤로 이동할 수 있습니다. ResultSet.CONCUR_UPDATABLE이라는 두 번째 값은 ResultSet 개체에 행을 삽입하려는 경우 필요합니다. 업데이터화할 수 있음을 지정합니다. 이 예제에서는 스크롤 가능한 결과 집합을 통해 앞으로 반복하려고 시도하며 여러 가지 이유로 올바르지 않습니다.

한 가지 오류는 ResultSet.isAfterLast 결과 집합이 비어 있을 때 호출 되는 경우 마지막 행이 없기 때문에 false 값을 반환 합니다. 루프 본문이 실행되며 원하는 것이 아닙니다. 추가 문제는 커서가 데이터를 포함하는 결과 집합의 첫 번째 행 앞에 배치될 때 발생합니다. 이 경우 현재 행이 없기 때문에 rs.relative(1)을 호출하는 것은 잘못된 것입니다. 메서드 상대는 커서를 현재 행에서 지정된 행 수를 이동하고 커서가 현재 행에 있는 동안에만 호출되어야 합니다. 그런 다음 생성된 문 개체에서 이 문을 실행하고 결과 집합 개체에 결과를 저장합니다: JDBC 2.0 API에 새로운 기능이 추가되면 응용 프로그램에서 DBMS 또는 드라이버가 지원하지 않는 기능을 요청할 수 있습니다. . 예를 들어 드라이버가 스크롤 가능한 결과 집합을 지원하지 않는 경우 정방향 전용 결과 집합을 반환할 수 있습니다. 또한 일부 쿼리는 업데이트할 수 없는 결과 집합을 반환하므로 업데이트 할 수 있는 결과 집합을 요청하면 해당 쿼리에 영향을 주지 않습니다. 일반적인 규칙은 쿼리가 선택한 열 중 하나로 기본 키를 포함해야 하며 하나의 테이블만 참조해야 한다는 것입니다.

메서드 Statement.addBatch 는 Statement 개체 stmt와 연결된 명령 목록에 명령을 추가합니다. 이 예제에서 이러한 명령은 모두 INSERT INTO 문이며 각 명령은 5개의 열 값으로 구성된 행을 추가합니다. COF_NAME 및 PRICE 열의 값은 커피의 이름과 가격입니다. 각 행의 두 번째 값은 49이며 이는 공급자인 슈페리어 커피의 식별 번호이기 때문입니다. 마지막 두 값, 열 SALES 및 TOTAL에 대 한 항목, 아직 판매 되지 않은 때문에 모두 0 되 고 시작 합니다. (판매는 이번 주에 판매된 이 행의 커피의 파운드 수입니다. TOTAL은 이 커피의 누적 판매량의 합계입니다.) 이 예제에서는 « the_classics »라는 테이블이 포함된 « 앨범 »이라는 로컬 데이터베이스가 실행되고 있다고 가정합니다. 테이블에는 다음 코드 조각이 이전 예제의 문제를 해결합니다.