2013-04-28 3 views
1

sqlite3_stmt에서 찾는 방법을 찾지 못했습니다.SQLite3에서 행 번호에 stmt를 찾는 방법은 무엇입니까?

나는 사용자가 SQL을 입력하고 실행할 수 있도록 입력보기를 가지고 있지만 결과에는 엄청난 양의 레코드가 있습니다. 결과의 일부만 표시하려고합니다.

예 : stmt에 20000 개의 행이 있습니다. 하지만 처음 2000 행 (0-2000)을 표시하려고합니다. 사용자가 다음 버튼을 클릭하면 두 번째 2000 행 (2000-4000)을 표시하려고합니다. 사용자가 이전 버튼을 클릭하면 디스플레이가 되감기를 원합니다. 그래서 나는 stmt에서 추구합니다. 하지만 stmt를 찾는 일부 SQLite3 함수를 찾을 수 없습니다.

C/C++ 인터페이스를 사용합니다.

+0

http://stackoverflow.com/questions/2497677/using-the-limit-statement-in-a-sqlite-query – tidwall

답변

1

SQLite는 즉시 명령문의 반환 값을 계산합니다. 다른 행으로 이동하는 방법은 sqlite3_step입니다. 거꾸로 움직일 수는 없습니다.

모든 행을 읽고 어딘가에 저장할 수 있지만 너무 많은 행이있을 때 비현실적입니다.

LIMIT/OFFSET clause과 별도의 쿼리를 실행하여 결과를 현재 창으로 제한 할 수 있습니다. 그러나 SQLite가 여전히 모든 레코드를 계산해야하기 때문에 오프셋 값이 커지면 비효율적입니다.

스크롤 커서를 구현하려면 페이지의 마지막 (/ 첫 번째) 레코드를 저장하고 해당 레코드 다음 (이전)의 다음/이전 2000 레코드를 반환하도록 데이터베이스에 요청해야합니다. 이것은 explained in detail in the SQLite wiki입니다.

+0

감사합니다. 나는 분명히 이것이야. :) – dinosaur

관련 문제