2012-06-08 6 views
5

Ich benutze SQLite Datenbank für iPhone App. aber es stürzt auf "While-Schleife" -Zeile ab, während manchmal Daten aus der Datenbank abgerufen werden.EXC_BAD_ACCESS in sqlite_step (Anweisung)

-(void)GetMethod 
{ 

    NSString *query = [[NSString alloc] initWithFormat:@"SELECT * FROM errorlogs"]; 
    sqlite3_stmt *statement;  
    if (sqlite3_prepare_v2(database, [query UTF8String],-1, &statement, nil) == SQLITE_OK) 
    { 
     while (sqlite3_step(statement) == SQLITE_ROW) **// EXC_BAD_ACCESS ON THIS LINE** 
     { 
      char *uid1 = (char *)sqlite3_column_text(statement, 0); 
      NSString *uid = [NSString stringWithFormat:@"%s",uid1]; 
     } 
    } 
    sqlite3_finalize(statement); 
} 

Warum bekomme ich diese EXC_BAD_ACCESS auf While-Schleife.

enter image description here Danke.

Antwort

2

Entweder sqlite3_step(statement) oder SQLITE_ROW nicht initialisiert wird, oder bereits freigegeben wurde. Wenn es die Gleichheitsprüfung für das nicht vorhandene Objekt ausführt, löst es EXE_BAD_ACCESS aus.

Gibt es Zeilen zurück?

+0

Danke für die Antwort. Ich benutze nur den oben genannten Code in meiner Frage. So wird sqlite3_step (statement) initialisiert und sqlite_row ist eine Konstante. Und sie sind noch nicht veröffentlicht. – iDilip

+0

Gibt 'SELECT * FROM errorlogs' irgendwelche Zeilen zurück? Wenn Fehlerlogs leer sind, könnten Sie gegen nichts vergleichen, was zu einem Fehler führen würde. –

3

Versuchen Sie es mit dem FMDB-Framework, es hat mir in meinem Projekt sehr geholfen.
Hier ist der Link: https://github.com/ccgus/fmdb
es einen Blick Geben Sie, wenn Sie können;)

+0

Ist es eine andere Datenbank? Wenn ja, kann ich für diesen Fehler nicht von einer Datenbank in eine andere migrieren. – iDilip

+0

nein, es ist nur ein Wrapper, um die Codierung zu vereinfachen, das ist es ziemlich viel. Plus es ist super einfach zu bedienen. Eine Sache versuchen, die Nszombies Ihren Fehler zu verfolgen, drücken Sie einfach Alt + Cmd + R und es gibt ein Kontrollkästchen mit der Aufschrift "Enable Zombie Objects". –

+0

NSZombie ist in meinem Projekt aktiviert. aber immer noch wirft es EXC_BAD_ACCESS auf diese Zeile. – iDilip