2013-03-02 36 views
10

我有一個我正在做的sqlite項目的問題,我正在使用FMDB,我遵循一個簡單的例子,但沒有工作。我找不到錯誤。我從終端做了我的數據庫模式,我在上面放了一些數據。我對ios dev非常陌生,所以我不知道我是否確實按照步驟操作。 這就是我所做的:FMDB ios沒有這樣的表

1 - 我做了我的數據庫模式並添加了一些字段。 2 - 我將database.db複製到xcode中的項目文件夾中。 3 - 我添加FMDB文件。 4 - 我添加了sqlite3.dylib 5 - 我把這個代碼:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.dbname = @"database.db"; 
    NSArray * docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString * docDIr = [docPath objectAtIndex:0]; 
    self.dbpath = [docDIr stringByAppendingPathComponent:dbname]; 

    [self checkDB]; 

    [self getQ]; 

    return YES; 
} 
-(void) getQ 
{ 
    FMDatabase * db = [FMDatabase databaseWithPath:dbpath]; 
    [db open]; 

    FMResultSet * result = [db executeQuery:@"SELECT * FROM table1"]; 

    NSLog(@"last Error: %@",[db lastErrorMessage]); 
    NSLog(@"result: %@", result); 
} 
-(void) checkDB 
{ 
    BOOL success; 
    NSFileManager * fm = [NSFileManager defaultManager]; 
    success = [fm fileExistsAtPath:dbpath]; 
    NSError * error = [[NSError alloc] init]; 
    if (success) return; 
    NSLog(@"result:"); 
    NSString * dbPathFromApp = [[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:self.dbname]; 

    [fm copyItemAtPath:dbPathFromApp toPath:dbpath error:&error];   
} 

顯然,這是清空數據庫,所以發生了什麼事?爲什麼我找不到table1?如果我用任何sqlite gui打開文件,表格顯示得很好。感謝您的幫助 控制檯顯示我接下來的幾行: 2013-03-02 14:05:13.839 myApp [21433:c07] last Error:no such table:table1 2013-03-02 14:01: [21433:C07]結果:(空)

回答

24

一對夫婦的想法:

  1. 我確認數據庫已添加到您的包。轉到您的目標設置,選擇「Build Phases」,展開「Copy Bundle Resources」,並確保您的數據庫在那裏列出。如果沒有,請點擊「+」按鈕並添加它。

    bundle

  2. 我想重置您的模擬器。如果您運行該應用程序並沒有正確複製數據庫,它會在您的文檔文件夾中爲您創建一個空白數據庫。通過重置您的模擬器,您可以擺脫任何可能存在的空白數據庫。

  3. 如果它仍然無法正常工作,我會在模擬器中檢查包數據庫。導航到模擬器文件夾(〜/庫/應用程序支持/ iPhone模擬器),找到應用程序,打開軟件包(通過控制點擊應用程序本身並說「顯示軟件包內容」),並檢查數據庫確定它有你的table1

+3

非常感謝!就是這樣,第1步和第2步完美無缺!我忘了一步,新手錯誤:D – Fede 2013-03-02 17:27:58

+0

你的觀點2是我忘了。我沒有將數據庫從數據包複製到文檔目錄。 – Suragch 2015-08-20 15:21:52

+0

非常感謝!第一步是我需要做的:) – 2015-08-29 10:03:58