我的主要包中有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搜索时没有任何好的提示,
但我认为多线程是一个解决方案,虽然我不知道多线程
有什么想法吗?!
答案 0 :(得分:0)
您正在使用类方法和变量来访问多个数据库,这是不可行的。我假设_dbPath
是一个静态变量,所以你可以在类方法中访问它?如果是这种情况,则第二次拨打InstantiateYourDatabase
时,您正在更改此值。
我会创建一个数据访问服务(可以是单例)来管理包含数据库详细信息的字典,然后您可以通过相应的密钥访问每个字典。