没有这样的表问题

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 中清理应用程序将复制最新的数据库。

【讨论】:

以上是关于没有这样的表问题的主要内容,如果未能解决你的问题,请参考以下文章

Android SQLite“没有这样的表”异常

没有这样的表 SQLite 错误:电子邮件 [重复]

django 没有这样的表:

OperationalError:没有这样的表

使用 SQLite“没有这样的表”测试 NHibernate - 生成模式

Django - 没有这样的表异常