2013-09-07 2 views
0

내 테이블에 2 개의 열 (wordid, word)이 있습니다. 나는 sqlite 부분을 테스트하는 단어를 검색하려고합니다. 그리고 아래 문은 항상 NULL을 반환합니다. 파이어 폭스 추가 기능 (sqlite 관리자)에서 진술을 테스트했기 때문에 데이터베이스에 아무런 문제가 없다고 확신한다.sqlite에서 데이터 가져 오기, 항상 null을 반환

NSString *str;  

const char *dbpath = [_databasePath UTF8String]; 
sqlite3_stmt *statement; 

if (sqlite3_open(dbpath, &_db) == SQLITE_OK){ 


    NSString *querySQL = [NSString stringWithFormat:@"SELECT word FROM Circle_En WHERE wordid=2"]; 

    const char *query_stmt = [querySQL UTF8String]; 

    if (sqlite3_prepare_v2(_db,query_stmt, -1, &statement, NULL) == SQLITE_OK){ 
     if (sqlite3_step(statement) == SQLITE_ROW){ 
      str = [[NSString alloc]initWithUTF8String:(char *) sqlite3_column_text(statement, 0)]; 
     } 
    } 

    sqlite3_finalize(statement); 
    sqlite3_close(_db); 
} 

모든 의견을 환영합니다.

최고 감사합니다,
타하

+1

사이드 참고 :이 형식 문자열은 완전히 불필요 단어로

1. 그래서 당신이이 필요 지수 (columnnumber)에 있습니다. –

+1

준비 문이 실패한 경우 아무 작업도 수행하지 않습니다. prepare가'SQLITE_OK'를 돌려주지 않으면'sqlite3_errmsg'를 기록하십시오. 또한'sqlite3_step'이'SQLITE_DONE'이 아닌 다른 것을 반환하면 뭔가를 기록하십시오. – Rob

답변

0

당신은 열 번호 부분에 실수를 했어요.

str = [[NSString alloc]initWithUTF8String:(char *) sqlite3_column_text(statement, 1)]; 
관련 문제