我正在使用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];
我试着将这些词放在“和之间”之间,我也是这样。
有什么想法吗?
答案 0 :(得分:0)
我没有在iPhone上使用过SQLite,但是你是否已经通过库查找了一些构建预编译SQL语句的方法?这将解决您可能遇到的一系列问题,例如对SQL查询的误解以及意外的\有意SQL注入。