在一个iPhone应用程序中访问多个sqlite数据库?

时间:2011-11-17 09:07:45

标签: objective-c ios sqlite

我的主要包中有2个数据库,我需要同时访问它们,以便获取数据并进行比较,

当我尝试分别访问其中一个时,我没有遇到任何问题。 但是当我尝试访问它们时,我得到一个数据库数据而不是两个!  我使用此函数来实现DB

+(void) InstantiateYourDatabase:(NSString *)DatabaseName {
     / /Using NSFileManager we can perform many file system operations.
     NSFileManager *fileManager = [NSFileManager defaultManager];

NSError *error;
NSString *dpname=DatabaseName;

_dbPath = [self getDBPath:dpname];

BOOL success = [fileManager fileExistsAtPath:_dbPath];

NSLog(@"success == %i",success);

if( !success) {

    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] 
                               stringByAppendingPathComponent:DatabaseName];
     success = [fileManager copyItemAtPath:defaultDBPath toPath:_dbPath error:&error];

    }  

}

这是打开连接

+(void) openconnection
{ 
      NSString *rDBName=@"Encrypteed.sqlite";
   NSString *cDBKey =@"secret"; 

    if(sqlite3_open([_dbPath UTF8String],&database)==SQLITE_OK)
    {    
          NSLog(@"connection to the database,,opened");
    }
    else
          NSLog(@"connection failed");  
}

然后在视图中加载了我使用的另一个类

[SqliteClass InstantiateYourDatabase:@"db1.sqlite"];
[SqliteClass openconnection];

NSMutableArray *array=[[NSMutableArray alloc]initWithArray:  [SqliteClass getNames:@"names"]];

[SqliteClass InstantiateYourDatabase:@"db.sqlite"];
[SqliteClass openconnection];
 NSMutableArray *toCompareArray=[[NSMutableArray alloc]init ];
[toCompareArray addObjectsFromArray:[SqliteClass getNames:@"Name"]];

Sqlite类是onther类,我有所有提到的方法,,,'getNames'也是一个类方法... 我得到一个数据库数据,,, 我尝试了很多tin = mes ,,我的任何数据库都没有错,我在Google搜索时没有任何好的提示,

但我认为多线程是一个解决方案,虽然我不知道多线程

有什么想法吗?!

1 个答案:

答案 0 :(得分:0)

您正在使用类方法和变量来访问多个数据库,这是不可行的。我假设_dbPath是一个静态变量,所以你可以在类方法中访问它?如果是这种情况,则第二次拨打InstantiateYourDatabase时,您正在更改此值。

我会创建一个数据访问服务(可以是单例)来管理包含数据库详细信息的字典,然后您可以通过相应的密钥访问每个字典。