2011-11-17 30 views
0

我有我的主束2個數據庫,我需要同時訪問,以獲得他們的數據並加以比較,在一個iphone應用程序中訪問多個sqlite數據庫?

當我試圖訪問其中一人單獨面對我沒有問題。 但是當我嘗試訪問它們時,我得到的數據庫數據都不是兩個! 我用這個功能來intstantiate數據庫

+(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 *[email protected]"Encrypteed.sqlite"; 
    NSString *cDBKey [email protected]"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」也是一個類的方法... 我得到一個數據庫中的數據,,, 我試過很多錫= MES ,,有任何我的數據庫沒有錯,我在谷歌搜索沒有任何很好的提示,,

,但我認爲多線程是一個解決方案,雖然我不知道多線程

想法

任何想法?

回答

0

您正在使用類的方法和變量來訪問多個數據庫,這只是沒有去上班。我認爲_dbPath是一個靜態變量,因此你可以在你的類方法訪問它?如果是這種情況,您第二次致電InstantiateYourDatabase時,您正在更改此值。

我想創建一個數據訪問服務(可以是個單),其管理的辭典保持數據庫的詳細信息,然後可以通過適當的鍵進入每一個。

+0

以及我試圖使用SqliteClass的對象和實例方法在另一個應用程序。用同樣的老結果,,我得到的錯誤味精,,發現沒有這樣的表:nameOfTable ,, _dbPath是靜態的字符串,, ü可以給我一個提示有關創建這樣的服務ü建議! –

+0

您有沒有使用CoreData的原因?它大大簡化了這一點! –

+0

使用SQLite直接會更快,,我沒有使用任何連包裝,, 現在它的作品我只用2點開放式的方法,而不是訪問一個開放的方法,,以「MAC OS」的應用程序,而不是IOS ,,,我沒有任何想法,爲什麼!但維持我需要現在,, 和日Thnx很多烏拉圭回合的時間.. –

相關問題