语法:将method的属性值赋给sql命令

时间:2011-10-13 11:14:51

标签: objective-c ios sqlite

我有方法:

-(NSMutableArray*)getTheCountriesEurope:(int)continentID
{
NSMutableArray* euCountriesArray=[[[NSMutableArray alloc]init]autorelease];
const char* sqlContinents="SELECT countries.countryID,countries.countryName\
FROM countries\
WHERE countries.relativeToContinentID=?";

如何分配sql命令my(int)continentID属性?我的意思是声明

WHERE countries.relativeToContinentID=?";

提前谢谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

formattedString = [NSString stringWithFormat:
    @"SELECT countries.countryID,countries.countryName\
    FROM countries\
    WHERE countries.relativeToContinentID=%i"
    ,continentID];

答案 1 :(得分:1)

“正确”的方法是使用sqlite3_prepare_v2()编译SQL语句,然后使用sqlite3_bind_int()将int参数绑定到语句。这比将int放入SQL查询字符串要好,因为

  1. 该语句可以使用不同的int参数重用
  2. 使用prepare / bind可以防止SQL injection attack的任何可能性。虽然这对于int参数来说不是问题,但对于字符串来说这是一个令人头痛的问题,你也可以用同样的方式做所有事情。