2012-02-03 5 views
0

난 SQLite는 데이터베이스 작성에 데이터를 삽입하고 그로부터 데이터를 검색에 대한 가이드를 따라 그 DB로부터 데이터를 추출하기 위해 다음 방법을 사용했을sqlite에서 이름으로 검색하는 데이터를 추출하는 방법은 무엇입니까?

-(IBAction)findContacts{ 

    const char *dbpath = [databasePath UTF8String]; 
    sqlite3_stmt *statement; 
    if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK) { 
     NSString *querySQL = [NSString stringWithFormat:@"SELECT adress, phone FROM CONTACTS WHERE name = \"%@\"", [name text]]; 
     status.text = querySQL;   
     const char *query_stmt = [querySQL UTF8String]; 

     if (sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK) { 
      if (sqlite3_step(statement)==SQLITE_ROW) { 

       NSString *adressField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)]; 
       adress.text = adressField; 

       NSString *phoneField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 1)]; 
       phone.text = phoneField; 

       status.text = @"Match Found"; 

       [adressField release]; 
       [phoneField release];} 

        status.text = @"Match not Found"; 
        adress.text = @""; 
        phone.text = @""; 
      sqlite3_finalize(statement);} 
     sqlite3_close(contactDB);}} 

내가 컴파일 할 때 에러없이! 관심 없어! 그러나 내가 무엇을 발견

sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK) 

동일하지 않았기 때문에, 코드가 statemens 경우에 점점되지 않았 음을했다 ... 작동하지 않습니다. 나는 그 상태를 역전했을 때 그걸 알아 냈습니다.

그리고 status.text에서 "match not found"를 보았습니다. 그러나 여전히 내부에서 진정한 접촉을 찾을 수 없었습니다.

코드에 문제가 있다는 것을 알고 있습니까? 'sqlite3_prepare_v2'의 결과가 실제로 SQLITE_OK 경우를 제외하고 사전에

덕분에 ...

답변

1

당신은 정말 블록을 입력하지 않으.

평등 요구 사항을 '! ='로 변경하는 것은 흥미로운 진단 이었지만 테스트 코드에 영구히 반영되어야하는 변경 사항은 아닙니다.

이제 우리는 sqlite3_prepare_v2가 성공을위한 코드를 반환하지 않는다는 것을 알았으니, 묻는 질문은 다음과 같습니다. 코드 으로 반환됩니까?

는 문서에 따르면, 여기에 표시된 코드 중 하나를 반환해야합니다 :

http://sqlite.org/c3ref/c_abort.html

또한 캐릭터 라인 표현을 얻기 위해 'sqlite3_errmsg'를 사용할 수 있습니다. 참조 : http://sqlite.org/c3ref/errcode.html

+0

당신의 도움으로 해결되었습니다. 감사합니다 que que ... :) – Karaca

관련 문제