gpt4 book ai didi

iphone - 使用 FMDB 执行 sqlite 查询

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:44 24 4
gpt4 key购买 nike

我在我的一个 iPhone 项目中使用 SQLite 的 FMDB 框架。代码如下:

for (int i = 0; i < CatID.count; i++) 
{
NSString *subCatId = [NSString stringWithFormat:@"SELECT * FROM expense
where CAT_ID = %@ AND CURR_ID = %@
AND EXP_DATE BETWEEN '%@' AND '%@' ",
[CatID objectAtIndex:rowTrip],
[currID objectAtIndex:1],
_fromTextField.text,
_toTextField.text];

FMResultSet *result = [database executeQuery:subCatId];

while([result next])
{
[_total addObject:[result stringForColumn:@"AMOUNT"]];
}

}
  1. CatID 是固定的,即由用户提供。

  2. carrID 使用 for 循环获取并查询。

每次 SQL 查询后,_total 数组都会递增(添加新对象),但这是挂起的。

假设我们的 "AMOUNT" 输出为 100,CatID.count 次对象被添加到 _total 数组。请告诉我哪里做错了。

最佳答案

在执行 SQL 查询时,不要使用[NSString stringWithFormat:] 方法。相反,只需按原样使用查询并沿 [database executeQuery:] 中的字符串传递参数。

尝试以下操作:

NSMutableArray* _total = [[NSMutableArray alloc] init];

for (int i = 0; i < [CatID count]; i++)
{
NSString *subCatId_QUERY = @"SELECT * FROM expense
where CAT_ID = %@ AND CURR_ID = %@
AND EXP_DATE BETWEEN '%@' AND '%@' ";


NSNumber* rowTrip = [[CatID objectAtIndex:rowTrip] intValue];
NSNumber* currID = [[currID objectAtIndex:1] intValue];

NSString* fromDate = _fromTextField.text;
NSString* toDate = _toTextField.text;

FMResultSet *result = [database executeQuery:subCatId_QUERY,rowTrip,currID, fromDate, toDate];

while([result next])
{
[_total addObject:[result stringForColumn:@"AMOUNT"]]; //are you sure about this? string??
}

}

关于iphone - 使用 FMDB 执行 sqlite 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13602479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com