0

これは、OrderData の行数を取得するための SQL です。(SQLite Database Browser で) ストレート SQL を使用すると、正しい値が得られます。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 に答える