2011-08-10 2 views
1

FMDB를 사용하여 데이터베이스에서 데이터를 가져 오려고했지만 잠시 동안 노력했지만 EXC_BAD_ACCESS 예외가 발생하는 이유를 알 수 없습니다. 매개 변수는 NSInteger에서 전달되지만 SELECT 문에서이 매개 변수를 기록하거나 사용할 수는 없습니다. 내가 가지고있는 코드는 다음과 같습니다.NSInteger 및 int 예외 제공

-(SQLiteResult*) getClient:(bool)forceRefresh id:(NSString*)id forYear:(NSInteger)year { 
    SQLiteResult *res; 
    if(!forceRefresh){ 
     NSMutableArray *hereditaments = [[NSMutableArray alloc] init]; 
     NSLog([NSString stringWithFormat:@"SELECT * FROM Clients WHERE ID = %@ AND Year = %@", id, [NSString stringWithFormat:@"%@", year]]); // exception 
     NSLog([NSString stringWithFormat:@"SELECT * FROM Clients WHERE ID = %@ AND Year = %@", id, year]]); // also exception 
     FMResultSet *rs = [db executeQuery:[NSString stringWithFormat: @"SELECT * FROM Clients WHERE ID = ? AND Year = %@", year], id]; // also exception 
     FMResultSet *rs = [db executeQuery:[NSString stringWithFormat: @"SELECT * FROM Clients WHERE ID = ? AND Year = ?", id, year]]; // also exception 

나는 그냥 문자열 대신 전달할 것입니다. SQL 문에서 올해를 사용할 수있는 안전한 방법이 있습니까? 한 해 변수로

답변

0

+0

매개 변수로 쿼리에 전달하는 대신 % d 형식으로 서식을 지정했습니다. 감사. – Echilon

3

NSInteger 객체의 유형이 아닌 사용자는 NSString의 창조 % d의 형식이 아닌 %에 @를 사용한다 NSInteger 타입이다. 그 유형은 int입니다. 따라서 형식 지정자로 %@을 사용할 수 없습니다. %d을 사용해야합니다.