0

这是我获取 OrderData 行数的 SQL。使用直接 SQL(在 SQLite 数据库浏览器中)它给了我正确的值;当我在带有 FMDB 的应用程序中使用此 select 语句时,我得到的计数为零 (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 语句中遗漏了什么?

4

1 回答 1

1

我相信这里的问题是围绕带有撇号的替换查询。在使用参数替换进行查询时,它们是不必要的(也是有害的),所以你只想executeQuery

"where custdata.Bus_name = ? ", globalBusinessName];

我的猜测是你要么得到 rs2 的 nil (你应该检查然后评估错误状态),或者查询没有找到任何结果,因此返回一个有效的 rs2,但计数为 0 .

于 2012-06-03T12:11:39.290 回答