首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FMDB查询计数

FMDB查询计数
EN

Stack Overflow用户
提问于 2015-09-09 18:01:03
回答 2查看 275关注 0票数 1

我正在创建一个从我创建的数据库中读取数据的应用程序。数据库有三个表:CLIFFSSECTORSREGIONS。我使用FMDB从REGIONS表推断数据,但同时我必须计算表FIELDS中的CITY的计数。

有人知道我是怎么做到的吗?

这是我的代码:

代码语言:javascript
复制
(void)viewDidLoad {
    [super viewDidLoad];

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"CLIMB.sqlite"];
    BOOL success = [fileManager fileExistsAtPath:writableDBPath];
    if(!success){
        NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"CLIMB.sqlite"];
        success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
    }
    if(!success){
        NSAssert1(0, @"failed to create writable db file with message '%@'.", [error localizedDescription]);
    }

    FMDatabase* db = [FMDatabase databaseWithPath:writableDBPath];
    if(![db open])
    {
        NSLog(@"Err %d: %@", [db lastErrorCode], [db lastErrorMessage]);
    }

    [db setShouldCacheStatements:YES];

    NSString *sql = @"SELECT * FROM REGIONI;";


    FMResultSet  *rs = [db executeQuery:sql];

    data = [[NSMutableArray alloc] init];
    while( [rs next] )
    {
        CDEvent * region = [[CDEvent alloc] init];
        region.ID_SETTORE = [rs stringForColumn:@"ID_SETTORE"];
        region.REGIONE = [rs stringForColumn:@"REGIONE"];
        region.N_CITTA = [rs stringForColumn:@"N_CITTA"];
        region.CODICE_ID = [rs stringForColumn:@"CODICE_ID"];
        region.CITTA = [rs stringForColumn:@"CITTA"];


        [data addObject:region];

    }
    [rs close];
    [db close];
}
EN

回答 2

Stack Overflow用户

发布于 2015-10-22 11:50:07

试试这个:

代码语言:javascript
复制
queryString = [NSString stringWithFormat:@"SELECT COUNT(CITY) FROM FIELDS];

NSInteger count = [db intForQuery: queryString];
票数 0
EN

Stack Overflow用户

发布于 2016-09-09 04:28:48

在回答之前,我在sql变量中看到了一些奇怪的东西:

代码语言:javascript
复制
NSString *sql = @"SELECT * FROM REGIONI;";

首先,在SQLite中没有必要在其语句中使用?;?其次,当表(如您所说)是区域时,您正在咨询REGIONI。

我的答案是:

代码语言:javascript
复制
FMResultSet *field = [db executeQuery:@"select count(CITY) from FIELDS as cities_number"];
int count = [field intForColumn:@"cities_number"];
NSLog(@"Number of cities: %i" , count);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32476530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档