使用%通配符绑定数据时出现问题

时间:2011-10-03 12:55:23

标签: objective-c sqlite binding

使用sqlite并构建查询,它们都可以正常工作,直到我尝试将某些数据绑定到查询中,例如 -

NSString *query = @"SELECT id, title FROM fields WHERE (staff LIKE '%?%');
sqlite3_prepare_v2(lessonPlansDatabase, [query UTF8String], -1, &stmt, nil);

NSString *theValue = @"Fred";
sqlite3_bind_text(stmt, 1, [theValue UTF8String], -1, NULL);

问题似乎是使用'%'。我已经尝试将它放入我绑定的字符串中,但这也不起作用。如果我只是完整地进行查询,例如 -

NSString *query = @"SELECT id, title FROM fields WHERE (staff LIKE '%Fred%');

并且不绑定任何东西,它工作正常。但我不想这样做,以防字符串中有字符扰乱查询,我宁愿让sqlite做绑定。如果没有'%'字符,绑定就可以正常工作。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

你想要

NSString *query = @"SELECT id, title FROM fields WHERE (staff LIKE ?)";
sqlite3_prepare_v2(lessonPlansDatabase, [query UTF8String], -1, &stmt, nil);

NSString *theValue = @"%Fred%";
sqlite3_bind_text(stmt, 1, [theValue UTF8String], -1, NULL);

答案 1 :(得分:0)

使用(%)转义(%)并尝试绑定文字。

(staff LIKE '%%?%%')