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()
전화 왜냐하면
이것은 정확하게 문제인 바보 같은 실수입니다. 도와 주셔서 감사합니다. 많은 감사드립니다! – Ryan