2009-07-10 7 views
0

Ich habe eine Tabelle und 3 Datensätze.iphone - SQLite Datensätze auf dem Tisch nicht kommen?

und ich habe den Code;

-(void) readScoreFromDatabase { 

sqlite3 *database; 


scores = [[NSMutableArray alloc] init]; 


if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 

    const char *sqlStatement = "select name,score from game"; 
    sqlite3_stmt *compiledStatement; 
    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 



     // Loop through the results and add them to the feeds array 
     while(sqlite3_step(compiledStatement) == SQLITE_ROW) { 
     //if(sqlite3_step(compiledStatement) == SQLITE_ROW) { 
      // Read the data from the result row 

      NSString *aName =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)]; 
      NSString *aScore =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]; 


      DatabaseClass *dbOBJ = [[DatabaseClass alloc] initWithName:aName score:aScore]; 


      [scores addObject:dbOBJ]; 

      [dbOBJ release]; 
     } 
    } 

    sqlite3_finalize(compiledStatement); 

} else { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"No Connection" 
                delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
    [alert show]; 
} 
sqlite3_close(database); 

} 

und ich verwende diesen Code, um Datensätze anzuzeigen;

-(IBAction)refreshClick:(id)sender { 

// Navigation logic -- create and push a new view controller 
IDRGameAppDelegate *appDelegate = (IDRGameAppDelegate *)[[UIApplication sharedApplication] delegate]; 
DatabaseClass *dbOBJ = (DatabaseClass *)[appDelegate.scores objectAtIndex:1]; 

game1NameLabel.text = dbOBJ.name; 
score1Label.text = dbOBJ.score; 
} 

Ich habe 3 Datensätze, aber ich kann nur einen Datensatz nehmen. Ich meine, diese Zeile wurde geändert "DatabaseClass * dbOBJ = (DatabaseClass *) [appDelegate.scores objectAtIndex: 1];"
objectAtIndex: 1 Wenn ich diesen Wert 1 oder 2 oder 3 usw. ändere, ändert sich das Ergebnis nicht. Es zeigt immer einen Datensatz aus 3 Datensätzen. Ich verstehe den Grund nicht.

Vielen Dank.

Antwort

0

Kann es sein, dass Sie fogot setzen, um Ihren Delegierten zu bewerten?

0

Dies ist nicht die Antwort, die Sie wollen, aber Sie sollten wirklich Core-Daten verwenden, jetzt, da es in iPhone OS 3.0 ist. Es behandelt das meiste für Sie und ist sehr einfach zu bedienen.

1

HALLO,

  1. Sind Sie in der Lage die Tabellenzeilen zu sehen, wenn Sie auf die SQite Manager gehen (von Firefox) und führen Sie die folgende Abfrage

    select namen, Punktzahl von Spiel;

    Wenn Sie 3 Datensätze sehen können.

    a. Dann ist die mögliche Antwort gehen Sie zum IPhone Simulator und tun Sie eine Reset-Einstellungen (die alle temporären Caches Datenbank löschen und Dateien erstellen)

    b. Gehe zu xcode und mache ein BUILD and GO.

    Hope this finden Sie aktuelle Datenbank erhalten und es in die Build-Ordner setzen

Anand