2012-02-11 33 views
6

私はiPhoneアプリのためのSQLiteを使用していると私は、このようなクエリを使用しています:特殊文字

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

すべてが完璧に動作します。

¿、¡、 `、 '、ñのような「特殊文字」で2つ以上の単語を挿入すると問題になります。それを修正する方法はわかりません:S特別な文字しか含まれていないので問題ありません。

このクエリが働いている(唯一の "A" があるので)::

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

このクエリは私にエラーを返し例えば

「エラー:近くに " ''":構文エラー「(があるので、 『O』と 『A』)は:と

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

私は間の言葉を入れてみました」間に 'と私は同じ取得します。

+0

こんにちは、この問題の解決策を見つけましたか?私は過去3日間同じことを実行しています。 –

+0

まだ申し訳ありません – llKoull

答えて

0

私はiPhoneでSQLiteを使っていませんが、ライブラリを見て、プリコンパイルされたSQL文を構築する方法を探しましたか?これは、SQLクエリの誤解や意図しないSQLインジェクションなど、あなたが遭遇するかもしれない多くの問題を解決します。

+1

いいえ、私は図書館を見ていません。詳細については、Xcodeに付属の公式のlibsqlite3.dylibを使用しています。誰か他の図書館を知っているなら、私はそれを試してみるでしょう。 – llKoull