我正在创建一个从我创建的数据库中读取数据的应用程序。数据库有三个表:CLIFFS、SECTORS、REGIONS。我使用FMDB从REGIONS表推断数据,但同时我必须计算表FIELDS中的CITY的计数。
有人知道我是怎么做到的吗?
这是我的代码:
(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];
}发布于 2015-10-22 11:50:07
试试这个:
queryString = [NSString stringWithFormat:@"SELECT COUNT(CITY) FROM FIELDS];
NSInteger count = [db intForQuery: queryString];发布于 2016-09-09 04:28:48
在回答之前,我在sql变量中看到了一些奇怪的东西:
NSString *sql = @"SELECT * FROM REGIONI;";首先,在SQLite中没有必要在其语句中使用?;?其次,当表(如您所说)是区域时,您正在咨询REGIONI。
我的答案是:
FMResultSet *field = [db executeQuery:@"select count(CITY) from FIELDS as cities_number"];
int count = [field intForColumn:@"cities_number"];
NSLog(@"Number of cities: %i" , count);https://stackoverflow.com/questions/32476530
复制相似问题