2011-02-21 10 views
5

Jak usunąć cały rekord z bazy danych SQLite.Jak usunąć rekord z SQLite dla iPhone'a

+(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;   
    } 

Ten kod nie działa dla mnie.

Z góry dziękuję.

+0

Gdzie to się nie uda? Sugeruję sprawdzenie wartości zwracanych z każdej wywoływanej funkcji. Co więcej, zapytania SQL zwykle kończą się średnikiem ';' średnik, ale twoja instrukcja SQL tego nie robi. Czy to jest zamierzone? Czy SQLite3 pozwala odejść od średników? – sarnold

+0

@ Ararnold wszystkie rzeczy, które miałem sprawdzić i wszystkie są w porządku. I iShu już dostarczyło mi rozwiązanie i działa dla mnie. Dzięki –

Odpowiedz

4

sqlite3_step, ta funkcja wymaga po przygotowaniu instrukcji kompilacji.

wykorzystanie w ten sposób

+(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;   
    } 
Powiązane problemy