다음을 통해 공유


스크롤 가능 커서

최신 화면 기반 애플리케이션에서 사용자는 데이터를 앞뒤로 스크롤합니다. 이러한 애플리케이션의 경우 이전에 가져온 행으로 돌아가는 것이 문제입니다. 한 가지 가능성은 커서를 닫고 다시 연 다음 커서가 필요한 행에 도달할 때까지 행을 가져오는 것입니다. 또 다른 가능성은 결과 집합을 읽고, 로컬로 캐시하고, 애플리케이션에서 스크롤을 구현하는 것입니다. 두 가능성 모두 작은 결과 집합에서만 잘 작동하며 후자의 가능성은 구현하기 어렵습니다. 더 나은 해결 방법은 결과 집합에서 앞뒤로 이동할 수 있는 스크롤 가능한 커서 를 사용하는 것입니다.

스크롤 가능한 커서는 사용자가 데이터를 앞뒤로 스크롤하는 최신 화면 기반 애플리케이션에서 일반적으로 사용됩니다. 그러나 스크롤 가능한 커서는 일반적으로 정방향 전용 커서보다 비용이 많이 들기 때문에 앞으로 전용 커서가 작업을 수행하지 않는 경우에만 애플리케이션에서 스크롤 가능한 커서를 사용해야 합니다.

뒤로 이동하는 기능은 앞으로 전용 커서에 적용되지 않는 질문을 제기합니다. 스크롤 가능한 커서가 이전에 가져온 행에 대한 변경 내용을 검색해야 하나요? 즉, 업데이트, 삭제 및 새로 삽입된 행을 검색해야 하나요?

이 문제는 특정 조건과 일치하는 행 집합인 결과 집합의 정의가 행이 해당 조건과 일치하는지 확인하기 위해 행이 검사 때를 명시하지 않으며, 행이 인출될 때마다 동일한 데이터를 포함해야 하는지 여부를 명시하지 않기 때문에 발생합니다. 이전 누락을 사용하면 스크롤 가능한 커서가 행이 삽입되었는지 삭제되었는지 여부를 감지할 수 있으며, 후자는 업데이트된 데이터를 검색할 수 있습니다.

변경 내용을 감지하는 기능은 경우에 따라 유용하고 때로는 유용하지 않을 수 있습니다. 예를 들어 회계 애플리케이션에는 모든 변경 내용을 무시하는 커서가 필요합니다. 커서에 최신 변경 내용이 표시되면 책의 균형을 맞추는 것은 불가능합니다. 반면 항공사 예약 시스템에는 데이터의 최신 변경 내용을 보여 주는 커서가 필요합니다. 이러한 커서가 없으면 데이터베이스를 지속적으로 다시 쿼리하여 최신 플라이트 가용성을 표시해야 합니다.

다른 애플리케이션의 요구 사항을 충족하기 위해 ODBC는 스크롤 가능한 커서의 네 가지 유형을 정의합니다. 이러한 커서는 비용 및 결과 집합의 변경 내용을 검색하는 기능에 따라 달라집니다. 스크롤 가능한 커서가 행에 대한 변경 내용을 검색할 수 있는 경우 해당 행을 다시 래치하려고 할 때만 이를 감지할 수 있습니다. 데이터 원본이 현재 페치된 행의 변경 내용을 커서에 알릴 수 있는 방법은 없습니다. 변경 내용의 표시 여부도 트랜잭션 격리 수준에 의해 제어됩니다. 자세한 내용은 트랜잭션 격리를 참조하세요.

이 섹션에서는 다음 항목을 다룹니다.