「pk」と「text」の2つの列を持つテーブル「keywords」があります。Firefox SQLiteマネージャーでは、「テキスト」列に「john」と「tom」の2つの名前があることがわかります。私のコードにはエラーや警告はありません。シミュレーターで実行していると、コンソールで、Whileループに入っていないことがわかります。FMResultSet"rs"がSQLクエリから結果を取得していないことを意味します。"Openssuccessful"メッセージが表示されます。これは、データベースが問題なく開かれ、データベースパス、データベース名などが正しいことを意味します。コンソールにクエリエラーが表示されないので、私のクエリも正しいです。しかし、「whileループが開始されました」というメッセージが表示されません。私のデータベース配列も空なので、whileループが機能していないことがわかります。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];
}