테이블과 3 개의 레코드가 있습니다.아이폰 - 테이블에 SQLite 레코드가 오지 않습니까?
및 코드가 있습니다.
-(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);
}
그리고이 코드를 사용하여 레코드를 보여줍니다.
-(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;
}
나는 3 개의 레코드를 가지고 있지만 하나의 레코드 만 가질 수 있습니다. 나는 그 줄을 변경했다 "DatabaseClass * dbOBJ = (DatabaseClass *) [appDelegate.scores objectAtIndex : 1];"
objectAtIndex : 1이 값을 1 또는 2 또는 3 등으로 변경하면 결과가 변경되지 않습니다. 그것은 항상 3 개의 레코드에서 하나의 레코드를 보여줍니다. 이유를 모르겠다.
감사합니다.