我正在做一个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];;
问题是,如果我只选择所有表,则查询正在运行..但如果我选择一个表,我想要结果。我怎么能这样做?
答案 0 :(得分:0)
尝试if条件使用with和condition并在条件仅传递所有str。
使用你喜欢的if条件。
if(([propertyTypeLabel.text length]==0) || ([cityLabel.text length]==0 ) ||( [locationLabel.text length]==0 )|| ([priceLabel.text length] ==0)||([postedLabel.text length]==0))
就像任何文本都是零条件一样,如果表单元格的蚂蚁点击你的查询运行,你也可以使用。
答案 1 :(得分:0)
除非字段实际为空,否则无法搜索空字段。 F.ex.如果你搜索
从mytable中选择*,其中username =“”;
你不会找到它,但是如果你对该字段为空或任何结果没问题,你必须使用like而不是=
从mytable中选择*,其中用户名如“%”;
或者更好的是,您可以像这样创建查询,假设您有三个要搜索的字段,用户名,名字和姓氏。下面的代码需要更多if if和buts,但是你应该能够完成这项工作,并且只有在符合要求的情况下才将参数添加到哪里。
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 = '%@'"]];
希望这有帮助