2012-03-25 48 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") 
相关问题