2012-03-25 66 views
1

我已經將數據庫包含在我的項目中,而且我之前也使用過fmdb。我想從我的舊項目複製我的代碼,但它仍然表示,「沒有這樣的表」沒有這樣的表問題

這裏是控制檯日誌:

DB Error: 1 "no such table: ANIMALS" 
DB Query: SELECT * FROM ANIMALS WHERE Name = 'koyun' 
DB Path: (null) 

這裏是我的代碼:

 NSString *path = [[NSBundle mainBundle] pathForResource:@"HayvanlarM" ofType:@"sqlite"]; 

    FMDatabase *database = [FMDatabase databaseWithPath:path]; 

    [database setLogsErrors:TRUE]; 

    [database open]; 

    NSString *anQuery = [[NSString alloc]initWithFormat:@"SELECT * FROM ANIMALS WHERE Name = '%@' ",[[bBackG objectAtIndex:0]stringByDeletingPathExtension]]; 

    FMResultSet *results = [database executeQuery:anQuery]; 


    while([results next]) { 

     NSString *animalName = [results stringForColumn:@"TR"]; 

     //gjText.text = animalName; 
     NSLog(@"animalName: %@",animalName); 
    } 



    [database close]; 
    database = nil; 

我試圖通過Firefox的SQLite管理器創建我的分貝,我試圖利塔,但都給了我同樣的錯誤(no such table)

任何人都可以告訴我什麼是我的代碼中的問題?我嘗試了所有關於這樣的問題的解決方案,但迄今爲止他們都沒有和我一起工作。

+0

你能否證實返回的路徑是否有效?沒有找到數據庫時SQLite的默認行爲是創建一個新的空行爲,因爲它是空的,它不會找到您要查找的表。 – borrrden 2012-03-25 10:56:14

+0

當我在Xcode中包含數據庫時,我並未選擇將其添加到目標,在我選擇將其添加到應用目標後,它開始從數據庫讀取 謝謝:) – mortgy 2012-03-25 12:48:10

回答

1

當我包括在Xcode分貝,我並沒有選擇將其添加到目標後,我選擇將其添加到應用程序的目標,它開始從數據庫中讀取謝謝:)

0

我解決了類似的問題通過刪除模擬器中的應用程序並重新編譯proj。 我認爲應用程序的數據庫不是我修改過的。因此,在模擬器中清理應用程序x代碼將複製最新的數據庫。

1

確保訪問現有數據庫時,代碼中的物理數據庫類型和數據庫類型必須匹配。 像.sqlite.db

let path = NSBundle.mainBundle().pathForResource("Database", ofType:"db") 
相關問題