2012-02-11 7 views
6

Sto usando SQLite per un'applicazione per iPhone e sto utilizzando una query come questa:Caratteri speciali a SQLite Query (in 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];

Si tratta di un semplice INSERT, ma sono dalla Spagna e sto avendo dei problemi con le tilde. Se faccio qualcosa di simile:

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

Tutto funziona perfetto.

Il problema diventa quando faccio un inserto con due o più parole con "caratteri speciali" come ¿, ¡, `, ', ... e non so come risolverlo: S Se la query contiene solo un carattere speciale, non ci sono problemi.

Ad esempio:

Questa query funziona (perché c'è solo una "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];

Questa query mi restituisce l'errore "Error: nei pressi di " ''": errore di sintassi "(perché ci sono una 'O' e 'à'):

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

ho cercato di mettere le parole tra" e tra 'e ottengo lo stesso.

Qualche idea?

+0

Ciao, hai trovato una soluzione solida a questo problema, sto correndo lo stesso negli ultimi tre giorni. –

+0

non ancora dispiaciuto – llKoull

risposta

0

Non ho lavorato con SQLite su iPhone ma hai guardato attraverso la libreria per trovare un modo di costruire una dichiarazione SQL precompilata? Ciò risolverebbe una serie di problemi che potrebbero verificarsi come interpretazioni errate di query SQL e Injection SQL intenzionale \ intenzionale.

+1

No, non ho guardato attraverso la biblioteca. Per ulteriori informazioni sto usando il libsqlite3.dylib ufficiale fornito con Xcode. Se qualcuno conosce un'altra libreria, lo proverò. – llKoull