0

我想从数据库中选择一条记录,其中“余额”大于您键入的数字。

常规的 sql 是:SELECT cardNum FROM cardInfo WHERE balance > money 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

1
NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [dirPaths objectAtIndex:0];
NSString *databasePath = [docDir stringByAppendingPathComponent:@"samcontact.sqlite"];
NSString *name;
NSString *phone;
FMDatabase *database = [FMDatabase databaseWithPath:databasePath];

[database open];
FMResultSet *results = [database executeQuery:@"select * from phone where Name = ?",txt_Name.text];
while ([results next])
{
    name = [results stringForColumn:@"Name"];
    phone = [results stringForColumn:@"phoneno"];
}

txt_Name.text = name;
txt_Contact.text = phone;
[database close];
于 2013-12-16T13:48:56.977 回答
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 回答