如何在FMResultSet中传递两个查询

时间:2014-08-03 07:34:20

标签: ios objective-c ios7 fmdb

我写了这段代码: -

[database open];

    NSString *stringQuery = [NSString stringWithFormat:@"SELECT email, firstName, id, lastName, phone FROM contacts WHERE id = '%@'", _stringID];

    NSString *stringQuery2 = [NSString stringWithFormat:@"SELECT id, status FROM members WHERE id = '%@'", _stringID];

    FMResultSet *result = [AppDel.database executeQueryWithFormat:stringQuery, stringQuery2];

    if ([result next])
    {
        labelEmail.text = [result stringForColumn:@"email"];
        labelFirstName.text = [result stringForColumn:@"firstName"];
        labelLastName.text = [result stringForColumn:@"lastName"];
        labelCellPhone.text = [result stringForColumn:@"phone"];

        labelSignInStatus.text = [result stringForColumn:@"status"];
    }

    [result close];

    [database close];

当我通过labelSignInStatus.text传递它时,它给了我labelCellPhone.text的值,显示“警告:我找不到名为'status'的列”&当我在Sqlite浏览器中传递查询时,它们给我正确的结果。我还创建了FMResultSet对象,名为FMResultSet * result1&传递查询它显示我同样的错误。 任何人都可以帮助我,我如何在FMResultSet中传递两个查询。 感谢

1 个答案:

答案 0 :(得分:2)

您无法将2个查询传递给executeQueryWithFormat。这不是它的意思。您可以传递一个查询,然后传递一些参数。如果您要自己格式化sql,那么只需使用executeQuery:(NSString *) sql

您在这里尝试做什么并不完全清楚,但您可能需要进行SQL连接。所以你的问题是一个SQL问题,而不是我认为的FMResult设置问题。

也许你需要这样的东西:

NSString *stringQuery = [NSString stringWithFormat:@"SELECT c.email, c.firstName, c.id, m.status c.lastName, c.phone FROM contacts c, members m where c.id=m.id and c.id='%@'", _stringID];

FMResultSet *result = [AppDel.database executeQuery:stringQuery];

这样会返回联系人与成员具有相同ID的行。然后你的其余代码应该可以工作。