Objective c Xcode比较来自FMDB的数字

Objective c Xcode比较来自FMDB的数字,objective-c,sql,xcode,fmdb,Objective C,Sql,Xcode,Fmdb,我想从“余额”大于您键入的数字的数据库中选择一条记录 常规sql是: 从cardInfo中选择cardNum,其中余额>按取款说明的汇票,折扣说明 但我不知道如何在objective-C中实现(在“WHERE”子句中将整数与NSString进行比较)。问题是没有NSInteger可以保存到FMDB表中 以下是我的部分代码: NSString * moneyText = moneyField.text; double money = [moneyText doubleValue]; NSStri

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

常规sql是: 从cardInfo中选择cardNum,其中余额>按取款说明的汇票,折扣说明

但我不知道如何在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).
有人能帮我吗~ 谢谢大家!~

你很接近了:

NSString *selectedRecord = [db stringForQuery: @"SELECT cardNum FROM cardInfo WHERE balance > ? ORDER BY withdrawals DESC, discount DESC", @(money)];
这基本上绑定了由语句中的
@(money)
创建的
NSNumber
,从而在调用SQL时替换它
stringForQuery:
始终返回第一个记录集中的第一个值(如果没有匹配项,则返回
nil


对于较旧版本的编译器,请使用
[NSNumber numberWithDouble:money]
而不是
@(money)

将其作为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]];
编辑

如果平衡是一个字符串,那么只需这样做

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

问题是:数据库中的余额是字符串,而不是数字。当我将balance的内容添加到数据库中时,数字不起作用。如果数据库中的数字是字符串,那么您将得到一个字符串比较,而不是数字比较,因此您对“常规sql”的原始注释似乎有误。要与编码为字符串的数字进行比较,您必须让数据库执行转换,以便可以进行数字比较,因此请使用“convert(decimal(28,8),isnull(balance,'0')”而不是“balance”谢谢。你知道如何在数据库中保存内容吗?我正在使用FMDB框架。当我尝试把它放入数字中时,表中什么都没有显示。问题是,数据库中的平衡是一个字符串,不是一个数字。我不能把内容作为一个数字添加到表中。为了提高你的答案,考虑写一个简短的EX。我正在使用FMDB数据库
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];