Мне нужно проверить временную метку в таблице базы данных 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];
Программа говорит, что никакие строки не были возвращены. Тестирование этого запроса непосредственно в базе данных возвращает правильную строку. Что происходит?
Спасибо.
Это именно то, что проблема, глупая ошибка. Спасибо за вашу помощь, очень ценим! – Ryan