如何使用带有SELECT语句和JOIN的FMDB获取行计数?

时间:2012-06-02 16:39:42

标签: objective-c sqlite fmdb

这是我获取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语句中是否缺少某些内容?

1 个答案:

答案 0 :(得分:1)

我认为这里的问题是用撇号替换替换查询。在使用参数替换进行查询时,它们是不必要的(并且是有害的),因此您只想使用

结束executeQuery
"where custdata.Bus_name = ? ", globalBusinessName];

我的猜测是你要么为rs2获取nil(你应该检查然后评估错误状态),或者查询无法找到任何结果,从而返回一个有效的rs2,但是0计数。