Xcode 循环不工作时SQlite数据库查询
我有一个表关键字,有两列pk和文本。在FirefoxSQLite管理器中,我可以看到文本列中有两个名字john和tom。我的代码中没有错误或警告。当我在模拟器中运行它时,我可以在控制台中看到我从未进入While循环。这意味着FMResultSet rs没有从SQL查询中获得任何结果。我正在成功打开消息意味着我的数据库打开时没有任何问题,并且数据库路径、数据库名称等正确无误。我的查询也是正确的,因为它在控制台中没有显示任何查询错误。但我没有收到while循环启动消息。我的数据库数组也是空的,所以我知道while循环不工作。我正在使用FML数据库。这是我的密码Xcode 循环不工作时SQlite数据库查询,xcode,sqlite,fmdb,Xcode,Sqlite,Fmdb,我有一个表关键字,有两列pk和文本。在FirefoxSQLite管理器中,我可以看到文本列中有两个名字john和tom。我的代码中没有错误或警告。当我在模拟器中运行它时,我可以在控制台中看到我从未进入While循环。这意味着FMResultSet rs没有从SQL查询中获得任何结果。我正在成功打开消息意味着我的数据库打开时没有任何问题,并且数据库路径、数据库名称等正确无误。我的查询也是正确的,因为它在控制台中没有显示任何查询错误。但我没有收到while循环启动消息。我的数据库数组也是空的,所以我
-(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];
}
无论文件路径是否存在,FMDB都会打开数据库。FMDB还设计为您可以调用[FMDatabase databaseWithPath:nil],而不会出现错误或警告。如果要检查是否打开了“正确”的数据库,则必须使用NSFileManager并验证路径
- (BOOL)fileExistsAtPath:(NSString *)path
最常见的错误是sqlite管理器和FMDB引用的是不同的数据库