2014-01-22 3 views
0

SQLite 데이터베이스 테이블에서 타임 스탬프와 비교하여 타임 스탬프를 확인해야합니다. 내 테이블에 대해 select 문을 실행하면 첫 번째 레코드가 누락 된 것처럼 보입니다.SQLite 쿼리 결과가 첫 번째 행에 없습니다.

lastMod = dict[@"LastMod"]; 
[self openDB]; 
NSString *sqlQuery = [NSString stringWithFormat:@"SELECT LastMod FROM %@ order by Lastmod desc", newTableName]; 

const char *sqlQueryChars = [sqlQuery cStringUsingEncoding:[NSString defaultCStringEncoding]]; 

sqlite3_stmt *statementChk; 

sqlite3_prepare_v2(congressDB, sqlQueryChars, -1, &statementChk, NULL); 

if (sqlite3_step(statementChk) == SQLITE_ERROR){ 

    NSAssert1(0, @"Error: %s", sqlite3_errmsg(congressDB)); 
    sqlite3_close(congressDB); 

} else { 

    if (sqlite3_step(statementChk) == SQLITE_ROW) { 

     NSString *resultString = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statementChk, 0)]; 
     NSNumberFormatter *resultNumberFormatter = [[NSNumberFormatter alloc] init]; 
     [resultNumberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
     NSNumber *resultNumber = [resultNumberFormatter numberFromString:resultString]; 

     if (resultNumber){ 

      if ([lastMod integerValue] > [resultNumber integerValue]) { 

       needsUpdating = @"YES"; 

      } else { 

       needsUpdating = @"NO"; 

      } 

     } 

    } else { 

     needsUpdating = @"YES"; // No rows found, table is empty and needs filling 

} 

데이터베이스의 최신 기록은 다음과 같습니다

1390393860 
1390385996 
1390385681 
... 

내가 원하는 기대하고 하나는 최고입니다 - 1390393860 (최신 기록이다) 가장 큰 수. 그러나 나는 두 번째 것을 얻고있다. 1390385996. 쿼리를 다음과 같이 바꾼다.

NSString *sqlQuery = [NSString stringWithFormat:@"SELECT LastMod FROM %@ order by Lastmod desc limit 1", newTableName]; 

프로그램은 행이 반환되지 않는다고 말한다. 이 쿼리를 데이터베이스에서 직접 테스트하면 올바른 행이 반환됩니다. 무슨 일이야?

감사합니다. 두 번 sqlite_step() 전화 왜냐하면

답변

0

이있다 :

if (sqlite3_step(statementChk) == SQLITE_ERROR){ 

    NSAssert1(0, @"Error: %s", sqlite3_errmsg(congressDB)); 
    sqlite3_close(congressDB); 

} else { 

    if (sqlite3_step(statementChk) == SQLITE_ROW) { 

당신은 마지막 호출을 사용해야하는 경우 :

if (sqlite3_step(statementChk) == SQLITE_ROW) { 

(당신은 다음 행을 인출 할 만 반응이있는 경우 오류).

+0

이것은 정확하게 문제인 바보 같은 실수입니다. 도와 주셔서 감사합니다. 많은 감사드립니다! – Ryan

관련 문제