2013-07-17 147 views
3

我在寫一個離線iPhone應用程序,我需要從包含少量表格的數據庫中讀取和顯示。這些表格中有超過10萬個條目,因此幾乎不可能單獨輸入。我已經下載了整個數據庫的.sql文件。現在我怎樣才能將數據庫導入sqlite/Xcode,以便我可以隨時開始訪問它中的數據? 編輯:我看到,使用數據庫時,使用的文件擴展名是.db文件。無論如何,我可以將.sql文件轉換爲.db文件。如果我可以這樣做,我可以簡單地通過將其放置在項目目錄中來訪問.db文件嗎?如何將.sql文件添加到Xcode中的sqlite數據庫

回答

4

如果你已經創建了.sqlite文件並且有表格,那麼把.sqlite文件添加到xcode就像從桌面拖動到你的包(資源)中一樣。然後使用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'文件讀取數據庫的權利?相反,我有一個'.sql'文件與我,而不是'.sqlite' –

+0

沒問題,你只需將文件拖放到您的文件夾並開始working.the類型的文件擴展名不重要。如果您有複製,然後拖放到您的workng文件夾稱爲沙箱。 – NHS

+1

我的疑問是,'.sql'文件實際上具有創建數據庫和表的命令並將值插入到表中。如何通過使用sql命令從這樣的文件訪問值? –

相關問題