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.