FMDB 出错 - 列名未知
Posted
技术标签:
【中文标题】FMDB 出错 - 列名未知【英文标题】:Error with FMDB - unknown column name 【发布时间】:2013-06-01 20:58:53 【问题描述】:我正在尝试使用 NSMutableArray
在我的 tableview 中显示我的 sqlite 数据库中的一些数据。
当我使用AssetDesc
作为我的单元格文本时,我可以在我的UITableCell
中从我的sqlite 数据库中看到我的描述。所以我知道一切正常。
但是,当我使用 AssetName 作为单元格文本时,我收到一个 sqlite 错误消息:
Warning: I could not find the column named 'AssetName'.
如果我改变这一行:
customer.assetName = [results stringForColumn:@"AssetName"];
像这样:
customer.assetName = [results stringForColumn:@"AssetDesc"];
它有效,所以它必须在我的数据库中,但我无法确定它。
但我确信那在我的资产表中。这对我来说很有意义。下面是我的数据库和代码的图片:
-(NSMutableArray *) getCustomers
NSMutableArray *customers = [[NSMutableArray alloc] init];
FMDatabase *db = [FMDatabase databaseWithPath:[Utility getDatabasePath]];
[db open];
FMResultSet *results = [db executeQuery:@"SELECT * FROM asset"];
while([results next])
Customer *customer = [[Customer alloc] init];
customer.assetId = [results intForColumn:@"AssetID"];
customer.assetName = [results stringForColumn:@"AssetName"];
customer.assetDesc = [results stringForColumn:@"AssetDesc"];
[customers addObject:customer];
[db close];
return customers;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"CustomerCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
Customer *customer = [self.customers objectAtIndex:[indexPath row]];
[[cell textLabel] setText:[NSString stringWithFormat:@"%@",customer.assetName]];
[[cell detailTextLabel] setText:[NSString stringWithFormat:@"%@",customer.assetDesc]];
return
【问题讨论】:
调试时,[results resultDictionary]
中的键是什么?
附带说明:您不会在请求之间打开和关闭数据库,而是创建一个查询,然后在完成枚举后关闭该查询
2013-06-01 23:22:39.840 [3759:907] 字典:(“”,“”,“”)
键是这个意思吗?
@RedDeFine 除非这些是由[results resultDictionary]
返回的NSDictionary
中的键(它们似乎不是,这看起来像您的customers
数组)然后没有。
【参考方案1】:
事实证明,我实际上不得不从我的设备上删除我的应用程序并再次运行它。它引用了存储在文档目录中的数据库。
我以为它引用了我的 Xcode 项目中的数据库。
当我从设备上删除该应用程序并再次安装时,它显然删除了我的文档目录中的文件。
【讨论】:
以上是关于FMDB 出错 - 列名未知的主要内容,如果未能解决你的问题,请参考以下文章
com.ibm.db2.jcc.b.SqlException:无效参数:未知列名 COL1