FMDB多个数据库查询

时间:2014-12-24 06:27:09

标签: ios objective-c sqlite fmdb

是否可以从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

中获取这些数据库的结果

0 个答案:

没有答案