Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uciec przed znakami cudzysłowów w MySQL i Javie?

Pozwól, że spróbuję zrozumieć...

Przychodzący plik zawiera cudzysłowy. Chcesz go wysłać do bazy danych. Kiedy odzyskasz go z bazy danych, nadal chcesz, aby te cytaty tam były.

Czy masz problem tylko z/do bazy danych?

Jeśli tak, to bardzo podejrzewasz, że robisz coś w kolejności:(zamknę to w klauzulę o wyłączeniu odpowiedzialności, aby niczego nie podejrzewający nie zrozumieli i nie wycinali/wklejali do własnych aplikacji.;))

Źle – nie rób tego

String sql = "insert into foo (bar,baz) values(" +myValue1 + ", " + myValue2 + ")";
Statement stmt = connection.createStatement();
stmt.executeUpdate(sql);

Źle – nie rób tego

Jeśli tak, to naprawdę powinieneś używać przynajmniej parametrów przygotowanych instrukcji. a) będziesz mniej podatny na złośliwe śmieci usuwające wszystkie twoje tabele i b) nie będziesz mieć żadnych problemów z ucieczką.

String sql = "insert into foo (bar, baz) values( ?, ? )";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, myValue1);
stmt.setString(2, myValue2);
stmt.executeUpdate();

Zauważ, że jest to również bezpieczniejsze w przypadku takich rzeczy jak CLOB i specyfiki różnych implementacji baz danych (mam na myśli Ciebie, Oracle>))

Jeśli jest to jakiś inny rodzaj ucieczki, to znaczy do/z XML lub do/z HTML, to jest inaczej, ale jest to dobrze udokumentowane w całej sieci.

Lub podaj przykładowy kod, jeśli jestem całkowicie poza bazą.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyróżnić zmiany/różnice w jednym akapicie tekstu od drugiego?

  2. Przekazywanie zmiennych PHP do MySQL

  3. java.net.SocketException:Uszkodzony potok

  4. Proste próbki losowe z bazy danych Sql

  5. Koncepcje Angular 2 i MySQL