我已将数据库包含在我的项目中,并且之前我也使用过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 manager创建我的数据库并尝试了lita,但两者都给了我同样的错误( no such table )
有人能告诉我代码中的问题是什么吗?我尝试了所有关于此类问题的解决方案,到目前为止,他们都没有与我合作过。
答案 0 :(得分:1)
当我在Xcode中包含db时,我没有选择将其添加到目标,在我选择将其添加到app目标后,它开始从数据库中读取谢谢:)
答案 1 :(得分:1)
确保在访问现有数据库时,代码中的物理数据库类型和数据库类型必须匹配。
例如.sqlite
或.db
let path = NSBundle.mainBundle().pathForResource("Database", ofType:"db")
答案 2 :(得分:0)
我通过在模拟器中删除应用程序解决了一个类似的问题并重新启动了项目。 我认为应用程序的数据库不是我修改过的。所以在模拟器中清理应用程序x代码将复制最新的数据库。