0

「残高」が入力した数値よりも大きいデータベースからレコードを選択したい。

通常の sql は次のとおりです。SELECT cardNum FROM cardInfo WHERE 残高 > お金 ORDER BY 引き出し DESC、割引 DESC。

しかし、Objective-C でそれを行う方法がわかりません (「WHERE」句で整数を NSString と比較する)。問題は、NSInteger を FMDB テーブルに保存できないことです。

ここに私のコードの一部があります:

NSString * moneyText = moneyField.text;
double money = [moneyText doubleValue];

NSString *selectedRecord = [db stringForQuery:@"SELECT cardInfo.cardNum FROM cardInfo WHERE (cardInfo.currentBalance ... I don't know what here is)ORDER BY withdrawals DESC];  (I want to get the first record only).

誰か助けてくれませんか?~ありがとう!~

4

3 に答える 3

0

あなたは近いです:

NSString *selectedRecord = [db stringForQuery: @"SELECT cardNum FROM cardInfo WHERE balance > ? ORDER BY withdrawals DESC, discount DESC", @(money)];

これは基本的に、ステートメントでNSNumber作成された をバインドし@(money)、SQL が呼び出されたときに置き換えられます。 stringForQuery:常に最初のレコードセットの最初の値を返します (またはnil一致がない場合)。

古いバージョンのコンパイラでは、[NSNumber numberWithDouble: money]代わりに@(money).

于 2013-03-23T10:12:03.137 に答える
0

次のように、NSNumber として渡すだけです。

NSString * moneyText = moneyField.text;
double money = [moneyText doubleValue];
NSString *selectedRecord = [db stringForQuery:@"SELECT cardNum FROM cardInfo WHERE balance > ? ORDER BY withdrawals DESC, discount DESC", [NSNumber numberWithDouble:money]];

編集

Balance が文字列の場合は、これを行うだけです。

NSString * moneyText = moneyField.text;
NSString *selectedRecord = [db stringForQuery:@"SELECT cardNum FROM cardInfo WHERE balance > ? ORDER BY withdrawals DESC, discount DESC", moneyText];
于 2013-03-23T10:12:38.523 に答える