Zauważyłem, że kiedy używam numeru PreparedStatement
, nie wydaje się, że wymyka się niektórym znakom wieloznacznym, takim jak "%" lub "_". Wiem, że można je uciec w MySql przy użyciu odwrotnego ukośnika. Zastanawiam się, jakie znaki uciekną z tego PreparedStatement
?Jakie znaki uciekną PreparedStatement?
Odpowiedz
PreparedStatement
niczego nie wymyka się - opiera się na obsłudze baz danych dla skompilowanych instrukcji.
Oznacza to, że PreparedStatement
nie zastępuje ?
s dla wartości parametrów w celu utworzenia dosłownego ciągu zapytania. Zamiast tego wysyła ciąg zapytania z symbolami zastępczymi do bazy danych i korzysta z obsługi bazy danych w celu powiązania parametrów zapytania (jednak może to zależeć od implementacji sterownika JDBC).
W moim teście wyklucza pojedyncze cudzysłowy, \r
, \t
, \n
i tak dalej. Działa całkiem nieźle:
String sql = "INSERT INTO test(title) VALUES(?)";
PreparedStatement stmt = con.prepareStatement(sql);
String title = "I'm a \"student\" in a \t (university) \r\n";
stmt.setString(1, title);
stmt.executeUpdate();
Może to być specyficzne dla sterownika/bazy danych. Jak wspomniano, większość nie odbiera automatycznie wejścia. – Leigh
- 1. Bardzo dziwne PreparedStatement w java?
- 2. setObject() metoda PreparedStatement
- 3. Jakie znaki są poprawne w adresie URL?
- 4. Jakie znaki są pozostawione dla tokenów pp?
- 5. Jakie znaki NIE są obecne w Unicode?
- 6. Jakie znaki są usuwane przez stringByAddingPercentEscapesUsingEncoding?
- 7. Jakie znaki są niedozwolone w nazwie oddziału?
- 8. JDBC - Statement, PreparedStatement, CallableStatement i caching
- 9. MySQLSyntaxErrorException gdy próbuje wykonać PreparedStatement
- 10. Ponownie użyj parametru w PreparedStatement?
- 11. Jak uzyskać parametry z PreparedStatement?
- 12. zapytań SQL wykonać z PreparedStatement
- 13. Jakie są dwa znaki separatora w zakotwiczeniu adresu URL?
- 14. Jakie są prawidłowe znaki w nazwach przestrzeni nazw PHP?
- 15. Jakie znaki specjalne są dozwolone w nazwie kolumny T-SQL?
- 16. Jakie znaki są dozwolone w nazwie atrybutu HTML?
- 17. Jakie są dozwolone znaki w słowach kluczowych Clojure?
- 18. Jakie są legalne/dozwolone znaki dla nazw plików serwera WWW?
- 19. Java PreparedStatement UTF-8 Problem charakter
- 20. Co powinienem najpierw zamknąć, PreparedStatement lub połączenie?
- 21. Wstawianie danych binarnych do MySQL (bez PreparedStatement)
- 22. PreparedStatement z tysiącami parametrów w klauzuli IN
- 23. Jak przekazać PreparedStatement setArray do tablicy znaków
- 24. Wstaw używając PreparedStatement. Jak automatycznie zwiększyć identyfikator?
- 25. Jak konwertować znaki specjalne na zwykłe znaki?
- 26. Wysublimowany tekst 2 - Wyświetl znaki białe znaki
- 27. Jak wypełnić kwerendę sql wieloma opcjonalnymi parametrami w PreparedStatement?
- 28. Jak radzić sobie z (być może) wartościami pustymi w PreparedStatement?
- 29. Datastax - czy system zabezpieczania wątków PreparedStatement jest bezpieczny?
- 30. Program PreparedStatement nie odczytuje wszystkich moich parametrów dla PostGIS Geography
Interesujące, jak wygląda to wsparcie dla MySql? – stevebot
MySql obsługuje przygotowane instrukcje w taki sam sposób po stronie serwera. Wygląd tego kodu zależy od używanego sterownika. –
Wierzę, że wiele sterowników rzeczywiście wstawia tekst argumentu z argumentem escape do tekstu SQL. –