2013-07-17 2 views
3

몇 가지 테이블로 구성된 데이터베이스에서 읽고 표시해야하는 오프라인 iPhone 응용 프로그램을 작성하고 있습니다. 테이블에는 100,000 개 이상의 항목이 있으므로 모든 항목을 개별적으로 입력하는 것은 거의 불가능합니다. 전체 데이터베이스의 .sql 파일을 다운로드했습니다. 지금 나는 어떻게 sqlite/Xcode에 db를 가져올 수있어서 쉽게 데이터를 액세스 할 수 있습니까 ?? 편집 : 데이터베이스를 사용할 때 파일 확장자가 .db 인 것을 보았습니다. 어쨌든 .sql 파일을 .db 파일로 변환 할 수 있습니까? 그리고 그 작업을 수행 할 수 있다면 프로젝트 디렉토리에 파일을 배치하여 .db 파일에 액세스 할 수 있습니까?Xcode의 sqlite db에 .sql 파일을 추가하는 방법

답변

4

.sqlite 파일을 만들고 테이블을 가지고 있다면 xcode에 .sqlite 파일을 추가하고 (예 : 바탕 화면에서 번들 (리소스)로 드래그하십시오.) 그리고 NSFileManager를 사용하여 sqlite 파일에 액세스하십시오. createdatabase에 대한 메소드를 작성하고 데이터베이스를 초기화해야하며 문서 폴더/시뮬레이터 폴더에서 sqlite 파일을 볼 수도 있습니다.

- (void)createEditableCopyOfDatabaseIfNeeded { 
    NSLog(@"Checking for database file"); 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSError *error; 
    NSString *dbPath = [self getDBPath]; 
    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"ihaikudb.sql"]; 
    BOOL success = [fileManager fileExistsAtPath:dbPath]; 

    NSLog(@"If needed, bundled default DB is at: %@",defaultDBPath); 

    if(!success) { 
     NSLog(@"Database didn't exist... Copying default from resource dir"); 
     success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error]; 

     if (!success) 
      NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]); 
    } else { 
     NSLog(@"Database must have existed at the following path: %@", dbPath); 
    } 
    NSLog(@"Done checking for db file"); 
} 
+0

우리는'.db' 파일에서 데이터베이스를 읽는 데 사용합니까? 오히려, 나는'.sqlite'가 아닌'.sqlite' 파일이 있습니다. –

+0

당신은 단지 파일을 폴더에 끌어서 놓기 만하면됩니다. 파일 확장자는 문제가되지 않습니다. workng 폴더로 드래그 앤 드롭하여 샌드 박싱이라고합니다. – NHS

+1

의심 스럽지만'.sql' 파일에는 실제로 데이터베이스와 테이블을 생성하고 그 값을 테이블에 삽입하는 명령이 있습니다. sql 명령을 사용하여 그러한 파일의 값에 액세스하는 방법은 무엇입니까? –

관련 문제