У меня есть DBManager
, который извлекает данные из базы данных (файл sqlite). Все остальные запросы в порядке, но это, кажется, что-то не работаетБаза данных Sqlite не может прочитать столбец
-(NSArray *)readCountries{
NSLog(@"[DBManager] readCountries");
NSMutableArray *countriesArray = [[NSMutableArray alloc] init];
//open db from users filesystem
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
const char* sql = "SELECT DISTINCT country FROM aed ORDER BY rowid";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
//loop through results
while (sqlite3_step(statement) == SQLITE_ROW) {
//read data from record
NSString *_country;
char* tmpCountry = (char*)sqlite3_column_text(statement, 1);
NSLog(@"tmpCountry = %@", [NSString stringWithUTF8String:tmpCountry]);
if (tmpCountry != NULL) {
_country = [NSString stringWithUTF8String:tmpCountry];
}else{
_country = @"n/a";
}
NSLog(@"country = %@", _country);
[countriesArray addObject:_country];
}
}
//finalize statement
sqlite3_finalize(statement);
}
//close database
sqlite3_close(database);
NSLog(@"[DBManager] countriesArray has %d objects", [countriesArray count]);
return (NSArray*)countriesArray;
}
Все, что я получаю от бревен, что мой массив имеет 5 объектов, которые прекрасно - но souldn't быть только «n/a» ... любая идея? Другие запросы хороши, они в основном используют sqlite3_column_text
, поэтому я не понимаю, почему он здесь не работает - может быть, свежий глаз поможет.
Что говорит rmaddy о регистрации - как написано, ваш код будет терпеть неудачу, а не сообщать вам, что случилось. (И sqlite3_errmsg часто довольно информативен.) –