"pk"와 "text"라는 두 개의 열이있는 "keywords"테이블이 있습니다. 파이어 폭스 SQLite 관리자에서는 "text"열에 "john"과 "tom"이라는 두 가지 이름이 있음을 알 수 있습니다. 내 코드에는 오류나 경고가 없습니다. 내가 시뮬레이터에서 실행하면 콘솔에서 While 루프로 들어간 적이 없다는 것을 알 수 있습니다. 그것은 FMResultSet "rs"는 SQL 쿼리에서 어떤 결과도 얻지 못하고 있음을 의미합니다. "Opened successfully"메시지는 내 데이터베이스가 문제없이 열렸음을 의미하며 데이터베이스 경로, 데이터베이스 이름 등은 정확합니다. 콘솔에서 검색어 오류가 표시되지 않으므로 내 검색어도 정확합니다. 하지만 "while loop started"메시지가 표시되지 않습니다. 내 데이터베이스 배열도 비어 있으므로 루프가 작동하지 않는 동안 알 수 있습니다. FMDatabase를 사용하고 있습니다. 여기 FMDB 파일의 경로가있는 경우 데이터베이스를 상관없이 열거 나되지루프가 작동하지 않는 동안 SQlite-FMDatabase 쿼리
-(void) readWordsfromDatabase
{
db=[FMDatabase databaseWithPath:globalDatabasePath];
globalDatabaseArray=[[NSMutableArray alloc] init];
[db setLogsErrors:TRUE ];
[db setTraceExecution:TRUE];
if (![db open])
{
NSLog(@"Failed to open database");
return;
}
else {
NSLog(@"Opened successfully");
}
FMResultSet *rs= [db executeQuery:@"SELECT * FROM keywords"];
while([rs next])
{
NSLog(@"while loop started");
int aPK=[rs intForColumn:@"pk"];
NSString *aText=[rs stringForColumn:@"text"];
NSLog(@"aText is %@",aText);
singleKeyword *sk=[[singleKeyword alloc] initWithData:aPK :aText];
[globalDatabaseArray addObject:sk];
[sk release];
NSLog(@"text in array%@",[self.globalDatabaseArray objectAtIndex:0]);
NSLog(@"text in array%@",[self.globalDatabaseArray objectAtIndex:1]);
}//while closed
//NSLog(@"text in array%@",[self.globalDatabaseArray objectAtIndex:0]);
// NSLog(@"text in array%@",[self.globalDatabaseArray objectAtIndex:1]);
[db close];
}