2012-02-11 55 views
6

Tôi đang sử dụng SQLite cho một ứng dụng iPhone và tôi đang sử dụng một truy vấn như thế này:kí tự đặc biệt trong SQLite Query (trong 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];

Nó là một INSERT đơn giản, nhưng tôi từ Tây Ban Nha và tôi đang gặp một số vấn đề với dấu ngã. Nếu tôi làm điều gì đó như:

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];

Tất cả đều hoạt động hoàn hảo.

Sự cố xảy ra khi tôi chèn bằng hai hoặc nhiều từ có "ký tự đặc biệt" như ¿, ¡, `, ', ñ ... Và tôi không biết cách khắc phục: S Nếu truy vấn chỉ chứa một ký tự đặc biệt không có vấn đề gì.

Ví dụ:

Truy vấn này đang làm việc (vì chỉ có một "á"):

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

Truy vấn này trả về cho tôi những lỗi "Lỗi: gần " ''": lỗi cú pháp "(vì có chữ 'O' và 'à'):

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

tôi cố gắng để đưa các từ giữa" và giữa 'và tôi nhận được như vậy.

Bất kỳ ý tưởng nào?

+0

Xin chào, bạn có tìm thấy bất kỳ giải pháp vững chắc nào cho vấn đề này hay không, tôi đang chạy suốt ba ngày qua. –

+0

chưa xin lỗi – llKoull

Trả lời

0

Tôi chưa từng làm việc với SQLite trên iPhone nhưng bạn đã xem qua thư viện để tìm cách xây dựng một câu lệnh SQL biên dịch sẵn chưa? Điều này sẽ giải quyết một loạt các vấn đề mà bạn có thể gặp phải như việc diễn giải sai các truy vấn SQL và SQL Injection vô tình cố ý.

+1

Không, tôi chưa xem qua thư viện. Để biết thêm thông tin tôi đang sử dụng libsqlite3.dylib chính thức đi kèm với Xcode. Nếu ai đó biết bất kỳ thư viện nào khác, tôi sẽ thử nó. – llKoull

Các vấn đề liên quan