2011-03-08 6 views
1

프로그램을 실행하려고하면 다음과 같은 오류가 발생합니다. 왜 내가 그걸 갖게 된거 야? 나는 지금 몇 시간 동안 노력했지만 포기합니다. 감사!iPhone 및 sqlite 쿼리 관련 문제

에러 :

2011-03-08 19 : 18 : 29.967 iphoneApp [2561 : 207] * 종료 앱 의한 캐치되지 않는 예외 'NSInvalidArgumentException', 이유에 「* + [있는 NSString stringWithUTF8String :] : NULL cString '

- (AnswerDTO *)findAnswerById:(NSInteger)primary_key { 
    AnswerDTO *dto = [[[AnswerDTO alloc] init] autorelease]; 

    sqlite3_stmt *statement = nil; 
    const char *sql = "SELECT * FROM klb_answers WHERE id = 7;"; 

    if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) { 
     sqlite3_bind_int(statement, 1, primary_key); 

     NSInteger answerId = sqlite3_column_int(statement, ANSWER_ID); 
     NSInteger answerQuestionId = sqlite3_column_int(statement, ANSWER_QUESTION_ID); 
     NSString *answerDescription = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, ANSWER_DESCRIPTION)]; 
     NSString *answerSerialNumber = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, ANSWER_SERIAL_NUMBER)]; 
     NSInteger answerIsCorrect = sqlite3_column_int(statement, ANSWER_IS_CORRECT); 

     dto.answerID = answerId; 
     dto.questionID = answerQuestionId; 
     dto.description = answerDescription; 
     dto.serialNumber = answerSerialNumber; 

     if (answerIsCorrect == 0) { 
      dto.isCorrect = NO; 
     } else { 
      dto.isCorrect = YES; 
     } 
    } else { 
     NSLog(@"Noe feil med statementet"); 
    } 

    sqlite3_finalize(statement); 

    return dto; 
} 
+1

masochists는 Objective-C에서 SQLite C API를 사용합니다. [FMDB 사용] (http://github.com/ccgus/fmdb) 또는 [CoreData] (http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CoreData/cdProgrammingGuide.html) . –

답변

2

쿼리를 "실행하고있는 것 같지 않습니다. 당신은 그것을 준비하고 매개 변수를 바인딩했지만 쿼리를 실행하고 응답을 얻기 위해 sqlite3_step()을 실행하지 않았습니다. 단일 레코드 또는 스칼라 인 경우에도 마찬가지입니다.

결과적으로 열 함수는 널값을 리턴합니다.

+0

JAgostoni : 100 % 정확합니다! 정말 고맙습니다!!! :) – LuckyLuke

+0

당신은 오신 것을 환영합니다. 내 첫 sqlite 프로젝트에서 나에게 일어난 일은 ... 나에게 항상 일어난다. 코어 데이터를 사용하여 데이터베이스 지속성을 제안 할 수 있습니까? 아니면 심지어 sqlite (TouchSQL 등)에 대한 많은 래퍼 중 하나? 객체 지향적으로 만듭니다. 그러나 프레임 워크에 대한 존중을 얻기 위해 처음으로 어려운 (배우) 방법을 배울 수는 없습니다. :) – JAgostoni