这是我获取OrderData行数的SQL。使用直接SQL(在SQLite数据库浏览器中)它给了我正确的值;当我在我的应用程序中使用这个选择语句与FMDB时,我得到一个零(0)的计数。
// get count of line items for each order
FMResultSet *rs2 = [fmdb executeQuery:@"select count(orderdata.order_id) from orderdata "
"join custdata on custdata.customer_id = orderinfo.cust_id "
"join orderinfo on orderdata.order_id = orderinfo.order_id "
"where custdata.Bus_name = '?'", globalBusinessName];
while([rs2 next]) {
globalItemCount = [rs2 intForColumnIndex: 0];
}
WHILE语句中是否缺少某些内容?
答案 0 :(得分:1)
我认为这里的问题是用撇号替换替换查询。在使用参数替换进行查询时,它们是不必要的(并且是有害的),因此您只想使用
结束executeQuery
"where custdata.Bus_name = ? ", globalBusinessName];
我的猜测是你要么为rs2获取nil(你应该检查然后评估错误状态),或者查询无法找到任何结果,从而返回一个有效的rs2,但是0计数。