Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 循环不工作时SQlite数据库查询_Xcode_Sqlite_Fmdb - Fatal编程技术网

Xcode 循环不工作时SQlite数据库查询

Xcode 循环不工作时SQlite数据库查询,xcode,sqlite,fmdb,Xcode,Sqlite,Fmdb,我有一个表关键字,有两列pk和文本。在FirefoxSQLite管理器中,我可以看到文本列中有两个名字john和tom。我的代码中没有错误或警告。当我在模拟器中运行它时,我可以在控制台中看到我从未进入While循环。这意味着FMResultSet rs没有从SQL查询中获得任何结果。我正在成功打开消息意味着我的数据库打开时没有任何问题,并且数据库路径、数据库名称等正确无误。我的查询也是正确的,因为它在控制台中没有显示任何查询错误。但我没有收到while循环启动消息。我的数据库数组也是空的,所以我

我有一个表关键字,有两列pk和文本。在FirefoxSQLite管理器中,我可以看到文本列中有两个名字john和tom。我的代码中没有错误或警告。当我在模拟器中运行它时,我可以在控制台中看到我从未进入While循环。这意味着FMResultSet rs没有从SQL查询中获得任何结果。我正在成功打开消息意味着我的数据库打开时没有任何问题,并且数据库路径、数据库名称等正确无误。我的查询也是正确的,因为它在控制台中没有显示任何查询错误。但我没有收到while循环启动消息。我的数据库数组也是空的,所以我知道while循环不工作。我正在使用FML数据库。这是我的密码

-(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引用的是不同的数据库