没有这样的表问题
Posted
技术标签:
【中文标题】没有这样的表问题【英文标题】:No Such Table issue 【发布时间】:2012-03-25 08:31:33 【问题描述】:我已经将数据库包含在我的项目中,并且我之前也使用过 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 )
谁能告诉我我的代码有什么问题?我尝试了所有发布的关于此类问题的解决方案,但到目前为止没有一个对我有用。
【问题讨论】:
你能确认返回的路径是有效的吗?找不到数据库时 SQLite 的默认行为是创建一个新的空数据库,因为它是空的,所以它不会找到您要查找的表。 当我在 Xcode 中包含 db 时,我没有选择将其添加到目标,在我选择将其添加到应用程序目标后,它开始从数据库中读取谢谢 :) 【参考方案1】:当我在 Xcode 中包含 db 时,我没有选择将其添加到目标,在我选择将其添加到应用程序目标后,它开始从数据库中读取谢谢 :)
【讨论】:
【参考方案2】:确保在访问现有数据库时,物理数据库类型和代码中的数据库类型必须匹配。
比如.sqlite
或.db
let path = NSBundle.mainBundle().pathForResource("Database", ofType:"db")
【讨论】:
【参考方案3】:我通过在模拟器中删除应用程序并重新构建项目解决了类似的问题。 我认为应用程序的数据库不是我修改过的数据库。所以在模拟器 x-code 中清理应用程序将复制最新的数据库。
【讨论】:
以上是关于没有这样的表问题的主要内容,如果未能解决你的问题,请参考以下文章