即使Input为Blank,如何运行SQLite Query

时间:2012-05-07 07:03:06

标签: iphone ipad sqlite

我正在做一个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];;

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

2 个答案:

答案 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 = '%@'"]];

希望这有帮助