0

我正在做一个 iPad 项目,UI 中有 3 个表。如果我在每个表中选择行。Sqlite 查询将从表中获取值并运行查询。请在下面找到我的查询。

NSString * str3=tableFou.string4;
    NSString * str4=tableFiv.string5;
    NSString * str2=tablethr.string3;

    sqlite3 *database;
    favorite=[[NSMutableArray alloc]init];
    if(sqlite3_open([databasePath UTF8String], &database)== SQLITE_OK){
        NSString *sql=[NSString stringWithFormat:@"Create view prizeview as SELECT country.name,item_country.id,text.text,substr(text,1,2) FROM country,item_country,prize,item_prize,gender,item_gender,text WHERE country.name = '%@' AND text.item = item_country.item AND country.id = item_country.id AND prize.name = '%@' and text.item=item_prize.item and prize.id = item_prize.id and gender.name = '%@' and text.item=item_gender.item and gender.id = item_gender.id ",str3,str4,str2];
        const char *sqlStatement = [sql UTF8String];;

问题是,如果我只选择所有表,则查询正在运行。但如果我选择一个表,我想要结果。我怎样才能做到这一点?

4

2 回答 2

0

除非该字段实际上是空的,否则您无法搜索空字段。前任 如果你搜索

select * from mytable where username = "";

你不会找到它,但如果你对字段为空或任何结果没问题,你必须使用 like 而不是 =

select * from mytable where username like "%";

或者更好的是,您可以像这样创建查询,假设您要搜索三个字段,用户名、名字和姓氏。下面的代码需要更多的 if 和 buts,但您应该能够完成这项工作,并且只有在满足要求时才将参数添加到 where。

NSMutableString *query = [[NSMutableString alloc] init];
[query appendString:@"select * from table where "];
if (username.text.lenghth >1) [query appendString:[NSString stringWithFormat:@"username = '%@'"]];
if (firstname.text.length >1) [query appendString:[NSString stringWithFormat:@"&& firstname = '%@'"]];
if (lastname.text.length >1) [query appendString:[NSString stringWithFormat:@"&& lastname = '%@'"]];

希望这可以帮助

于 2012-05-07T07:36:19.073 回答
0

尝试使用 if 条件使用 and 条件并将所有 str 传递给 if 条件。

像这样使用你的 if 条件。

if(([propertyTypeLabel.text length]==0) || ([cityLabel.text length]==0 ) ||( [locationLabel.text length]==0 )|| ([priceLabel.text length] ==0)||([postedLabel.text length]==0))

在这种情况下,任何文本都是零条件,如果表格单元格的蚂蚁点击您的查询运行,您也可以使用。

于 2012-05-07T07:15:32.063 回答