2014-04-23 3 views
0

안녕하세요 저는 프로젝트 리소스 폴더에서 정적 SQLite3을 추가 할 계획입니다. 올바르게 수행하고 있는지 잘 모릅니다.Sqlite3 from iOS의 번들 리소스

지금까지 여기 내 진행 ... SQLite Database Browser

내 프로젝트 폴더에

복사 된 sqlite3를 데이터베이스 enter image description here

내 프로젝트의 리소스 폴더에

추가 된 network.db enter image description here

에서 만든 sqlite3를 데이터베이스입니다 그리고 지금 나는 어디로 가야할지 모르겠다. 나는 누군가 내 문제를 도와 줄 수 있기를 바란다. 당신은 문서 디렉토리에 해당 프로젝트 파일을 추가 할 필요가

+0

.db 파일을 어디에 추가 하시겠습니까? 문서 디렉토리에 있습니까? – NKB

+0

DB에 대한 작업을 수행하기 전에 이것을 문서 폴더에 복사해야합니다. –

+0

주 링크에서 디렉토리에 액세스 할 수 없으므로 데이터를 삽입, 삭제 또는 업데이트하기 위해이 파일을 문서 디렉토리에 복사해야합니다. –

답변

3

런타임에 데이터베이스를 수정하는 경우 (즉, 레코드를 삽입, 삭제 또는 업데이트하는 경우)에는 번들에서 문서 디렉토리로 복사본을 만들어야합니다. iOS 전송 메커니즘을 사용하면 런타임에 번들 리소스를 수정할 수 없습니다. 따라서 문서 디렉토리에 복사해야합니다. 코드가 당신을 도울 수 아래 :

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError *error = nil; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); 
NSString *documentsDir = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDir stringByAppendingPathComponent:@"network.db"]; 

BOOL success = [fileManager fileExistsAtPath:filePath]; 

if(!success) 
{ 
     NSString *defaultDBPath = [[[NSBundle mainBundle] pathForResource:@"network" ofType:@"db"]; 
     success = [fileManager copyItemAtPath:defaultDBPath toPath:filePath error:&error]; 

     if (!success) 
      NSAssert1(0, @"Failed to create writable resource file with message '%@'.", [error localizedDescription]); 

} 

만 (만 선택 쿼리를 사용하여) 조회의 목적을 위해 귀하의 DB를 참조하는 경우, 문서 디렉토리에 번들 복사 할 필요가 없습니다.

1

,

당신은 그것을 위해

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *sourcePath = [[[NSBundle mainBundle] bundlePath]stringByAppendingPathComponent:@"networks.db"]; 

NSError *error; 

[[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:documentsDirectory error:&error]; 

그리고 당신이 sqlite3를 파일로 아무것도 할하려는 경우 다음 사용할 수를이 작업을 수행 할 수 있습니다 모든 SQLite 관리자 예 : SQLite Manager

1

체크 아웃 내 대답은 link입니다. 이것은 copy your database into document directory file from your bundle입니다. 그러면이 데이터베이스를 사용하여 데이터를 삽입, 업데이트, 삭제할 수 있습니다. 자세한 내용은 Sample Code

관련 문제