데이터베이스 (sqlite 파일)에서 데이터를 가져 오는 DBManager
이 있습니다. 다른 모든 쿼리는 잘하지만,이 사람은 어떻게 든 작동하지 않는 것 같다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는 종종 유익한 정보입니다.) –