是否可以从FMDB中的多个数据库中获取“选择”查询?
我的程序有很多具有相同模式但数据和名称不同的数据库。
用户可以下载这些数据库并将其添加到文档文件夹中。
现在我想从多个数据库中获取查询并将它们保存在Nsmutable数组中。
这是我如何用一个数据库处理我的程序:
Utlity.m ,用于访问我的主程序数据库:
@implementation Utility
+(NSString *) getDatabasePath
{
NSString *databasePath = [(AppDelegate *)[[UIApplication sharedApplication] delegate] databasePath];
return databasePath;
}
+(void) showAlert:(NSString *)title message:(NSString *)msg
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
[alert show];
}
数据库创建insdide appdelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[NSThread sleepForTimeInterval:2];
self.databaseName = @"News.db";
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDir = [documentPaths objectAtIndex:0];
self.databasePath = [documentDir stringByAppendingPathComponent:self.databaseName];
BOOL createAndCheckTables_result = [self createAndCheckTables];
NSLog(@"createAndCheckTables is : %s ", createAndCheckTables_result ? "true" : "false");
return YES;
}
-(void) createAndCheckDatabase
{
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
success = [fileManager fileExistsAtPath:self.databasePath];
if(success) return;
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:self.databasePath error:nil];
}
我如何在控制器内调用主数据库:
self.resultsdict = [[NSMutableArray alloc] init];
FMDatabase *db = [FMDatabase databaseWithPath:[Utility getDatabasePath]];
[db open];
FMResultSet *results_test = [db executeQuery:@"SELECT * FROM News"];
while([results_test next])
{
[self.resultsdict addObject:[results_test resultDictionary]];
}
[db close];
和另一个数据库(Downloaded)我只是改变:
NSString * sql = [NSString stringWithFormat:@"SELECT * FROM news order by Id"];
NSString *pathLocal = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"44320.s3db"];
FMDatabase *db = [FMDatabase databaseWithPath:pathLocal];
[db open];
FMResultSet *results_packs = [db executeQuery:sql];
while([results_packs next])
{
[self.resultsdict addObject:[results_packs resultDictionary]];
}
我将下载的数据库名称列表保存在我的主数据库“Db_Table”中,并将s3db文件存储在“documentPaths”中。 现在我只想将一个数据库列表传递给pathLocal并从我的 self.resultsdict
中获取这些数据库的结果