SQLite查询中的特殊字符(在iPhone中)

时间:2012-02-11 10:10:25

标签: iphone xcode4 ios5 sqlite

我正在使用SQLite作为iPhone应用程序而我正在使用这样的查询:

NSString *query = [[NSString alloc] initWithFormat:@"INSERT INTO Courses (name, credits, web, tName, tSurname, tMail, tOffice) VALUES (\'%@\', \'%@\', \'%@\', \'%@\', \'%@\', \'%@\', \'%@\');", self.name, self.credits, self.web, self.tName, self.tSurname, self.tMail, self.tOffice];

这是一个简单的INSERT,但我来自西班牙,我遇到了一些问题。如果我这样做:

INSERT INTO Courses (name, credits, web, tName, tSurname, tMail, tOffice) VALUES ('test', 'test', 'test', 'test', 'test', 'test', 'test');", self.name, self.credits, self.web, self.tName, self.tSurname, self.tMail, self.tOffice];

一切都很完美。

当我插入两个或更多带有“特殊字符”的单词时会出现问题,例如¿,¡,`,',ñ...而且我不知道如何解决它:S如果仅查询包含一个特殊字符没有问题。

例如:

此查询正在运行(因为只有“á”):

INSERT INTO Courses (name, credits, web, tName, tSurname, tMail, tOffice) VALUES ('Matemáticas', '1', '', 'Name', 'Surname', 'a@a.com', '');", self.name, self.credits, self.web, self.tName, self.tSurname, self.tMail, self.tOffice];

此查询返回错误“Error:near”''“:语法错误”(因为有“ó”和“à”):

INSERT INTO Courses (name, credits, web, tName, tSurname, tMail, tOffice) VALUES ('Gestió', '1', '', 'à', 'Surname', 'a@a.com', '');", self.name, self.credits, self.web, self.tName, self.tSurname, self.tMail, self.tOffice];

我试着将这些词放在“和之间”之间,我也是这样。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我没有在iPhone上使用过SQLite,但是你是否已经通过库查找了一些构建预编译SQL语句的方法?这将解决您可能遇到的一系列问题,例如对SQL查询的误解以及意外的\有意SQL注入。