Próbuję odczytać warunki z bazy danych (> 10 KB) i używam tego terminu w innym zapytaniu. Dostaję następujący błąd w Oracle:Jak uniknąć pojedynczego cudzysłowu w sql, który powoduje, że "cytowany ciąg znaków nie został poprawnie zakończony"?
notowane ciąg nie prawidłowo zakończone”
zrobiłem
term.replaceAll("'", "\\'");
ale nie wydaje się, aby wykonać zadanie ode mnie. Poza tym terminy te są tokenami z dokumentów, gdy są konwertowane na tekst. Czy istnieje wyrażenie regularne, które może przezwyciężyć ten problem?
Kwerenda SQL jest dokładny:
String sql = "Select * from indexDB where (DocID=" + d.getDocId() + "and Term='" + term + "')";
Używam Java. Wymiana nie działa dla mnie.
Należy przeczytać o [SQL Injection] (http://en.wikipedia.org/wiki/SQL_injection) – Oded
Zobacz także http://bobby-tables.com/, aby uzyskać szczegółowe informacje na temat używania sparametryzowanych zapytań w w jakimkolwiek języku, z którego korzystasz. To ochroni cię przed iniekcją SQL, o której wspomina Oded. –
Tak, przeszedłem przez to i sparametryzowano zapytanie !! Dzięki wielkie ! – Aashima