2016-09-23 1 views
-1

이것은 mysql_num_rows 덕분에 mysql에서 간단하지만 sqlite3에는 이와 동등한 것이 없다. 따라서 질문은 현재 행이 마지막 행인지 여부를 아는 것입니다.SQLite3 - 현재 행이 마지막 행인지 알 수있는 방법

다음과 같은 재 배열은 sqlite3_step이 유효하지 않은 이전 바인딩으로는 도움이되지 않습니다.

sqlite3_prepare_v2() 
int fetched = 0; 
int last = 0; 
while (sqlite3_step(statement) == SQLITE_ROW) { 
     // this is the previous row 
     if(fetched) { 
      process(data, last); 
     } 
     fetched = 1; 
     data = sqlite3_column_text(); 
} 
last = 1; 
if(fetched) 
    process(data, last); 

쿼리를 두 번 실행하면 (계산과 함께) 사소한 해결 방법이 있지만 그게 내가 원하는 것이 아닙니다.

아이디어가 있으십니까? 미리 감사드립니다.

+0

'WITHOUT ROWID' 절을 사용하여 테이블을 만들지 않았다면,'SELECT Max (ROWID) AS LastRow'는 마지막으로 생성 된 행을 제공해야합니다. 'AS LastRow'는 선택 사항입니다. –

답변

0

SQLite는 필요할 때만 다음 출력 행을 계산합니다. 실제로 행에 들어가려고하지 않고 다른 행을 얻을 수 있는지 알아낼 수 없습니다.

현재 행이 마지막 행인지 여부를 코드에서 실제로 알아야 할 경우 행의 모든 ​​데이터 사본을 만들어야합니다.

+0

고마워요, 우리가 지금하고 있지만 효율적이지 않아서 간과 한 방법이 있는지 확인하고있었습니다. – yumoji

관련 문제