sql >> Database teknologi >  >> RDS >> Mysql

Sådan undslipper du anførselstegn i MySQL og Java

Lad mig prøve at forstå...

Den indkommende fil har anførselstegn. Du vil sende det til en database. Når du får det tilbage fra databasen, vil du stadig have, at disse citater skal være der.

Så er det kun til/fra databasen, du har dit problem?

Hvis ja, så er jeg højt har mistanke om, at du laver noget i størrelsesordenen:(Jeg pakker det ind i en ansvarsfraskrivelse for at forhindre de intetanende i at misforstå og klippe/indsætte i deres egne applikationer.;))

Dårligt - gør ikke dette

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

Dårligt - gør det ikke

Hvis det er tilfældet, bør du som minimum virkelig bruge parametrene for udarbejdet udsagn. a) du vil være mindre sårbar over for ondsindet affald, der sletter alle dine borde, og b) du vil ikke have nogen undslippeproblemer.

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

Bemærk, at det også er mere sikkert i tilfælde af ting som CLOB'er og detaljerne ved forskellige databaseimplementeringer (jeg tænker på dig, Oracle>))

Hvis det er en anden form for escape, det vil sige til/fra XML eller til/fra HTML, så er det anderledes, men det er veldokumenteret overalt på nettet.

Eller angiv en eksempelkode, hvis jeg er helt ude af base.



  1. Fik fejlen 'ugyldige gentagelsesantal(er)' fra regexp

  2. Indsæt billede i databasen ved hjælp af php

  3. RMySQL-systemfejl:10060

  4. [Video] Ansible og PostgreSQL