2011-02-21 3 views
5

SQLite 데이터베이스에서 모든 레코드를 삭제하는 방법.SQLite for iPhone에서 레코드를 삭제하는 방법

+(BOOL)deleteFromtbl { 
     sqlite3 *database; 
     BOOL retValue = YES; 
     if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
      const char *sqlStatement = "Delete from tbl"; 
      sqlite3_stmt *compiledStatement; 
      retValue = sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL); 
      sqlite3_finalize(compiledStatement); 
     } 
     sqlite3_close(database); 

     return retValue;   
    } 

이 코드는 나를 위해 작동하지 않습니다.

미리 감사드립니다.

+0

에 사용되는 경우는 실패 했는가? 호출하는 모든 함수에서 반환 값을 확인하는 것이 좋습니다. 또한 SQL 쿼리는 일반적으로 세미콜론 (;)으로 끝나지 만 SQL 문은 끝나지 않습니다. 그게 의도적 인거야? SQLite3를 사용하면 세미콜론을 사용할 수 있습니까? – sarnold

+0

@sarnold 내가 확인하고 모든 것이 옳다. 그리고 iShu는 이미 저에게 해결책을 제공해 주었고 그것은 나를 위해 일하고 있습니다. 감사 –

답변

4

sqlite3_step이 함수는 컴파일 문을 준비한 후에 필요합니다.

이 방법

+(BOOL)deleteFromtbl { 
     sqlite3 *database; 
     BOOL retValue = YES; 
     if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
      const char *sqlStatement = "Delete from tbl"; 
      sqlite3_stmt *compiledStatement; 
      retValue = sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL); 
if(SQLITE_DONE != sqlite3_step(compiledStatement))//add this line 
    { 
     NSLog(@"Error while inserting data. '%s'", sqlite3_errmsg(database)); 
     return NO; 
    } 
      sqlite3_finalize(compiledStatement); 
     } 
     sqlite3_close(database); 

     return retValue;   
    } 
관련 문제