sql >> Databasteknik >  >> RDS >> Mysql

Hur man undkommer citattecken i MySQL och Java

Låt mig försöka förstå...

Den inkommande filen har citattecken. Du vill skicka den till en databas. När du får tillbaka det från databasen vill du fortfarande att dessa citat ska finnas där.

Så är det bara till/från databasen du har ditt problem?

I så fall är jag högt misstänker att du gör något i storleksordningen:(Jag lindar in det i en ansvarsfriskrivning för att förhindra att de intet ont anande missförstår och klipper/klistrar in i sina egna applikationer.;))

Dåligt – gör inte detta

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

Dåligt – gör inte det

Om så är fallet bör du verkligen använda parametrarna för förberedda uttalanden som ett minimum. a) du kommer att vara mindre sårbar för skadlig skräp som tar bort alla dina tabeller, och b) du kommer inte att ha några flyktproblem.

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

Observera att det också är säkrare när det gäller saker som CLOBs och specifikationerna för olika databasimplementeringar (jag tänker på dig, Oracle>))

Om det är någon annan typ av flykt, det vill säga till/från XML eller till/från HTML så är det annorlunda, men det är väldokumenterat över hela webben.

Eller ange någon exempelkod om jag är helt utanför basen.



  1. Multi threading C#-applikation med SQL Server-databasanrop

  2. Varför avbryter Hibernate/JDBC/MySQL anslutningar efter någon dag?

  3. Använder du MySql MySQLMembershipProvider - autogenerateschema=true fungerar inte?

  4. 3 sätt att få en lista över databaser i SQL Server (T-SQL)