sql >> Databasteknik >  >> RDS >> Sqlserver

Hur fångar man in/kodar specialtecken för SQL Server i java-appen?

Jag antar att du konstruerar SQL på något sätt som

String sql = "Select Column from tab where column='" + StringParm + "'"; 

Eller något liknande? Om du gör det är du öppen för alla typer av utnyttjande och du kommer också att se beteenden som du beskriver, där den resulterande strängen inte längre är giltig SQL. Du måste först undkomma den av användaren tillhandahållna parametern.

Den bästa lösningen är att använda PreparedStatements, så det gör du

Statement stmt = conn.prepareStatement("Select Column from tab where column=?");
stmt.setString(1,StringParam);

Jag kan dock inte se något snabbt sätt att lösa ditt problem utan att ändra någon Java-kod, men kanske undviker/sanerar inmatningen innan den träffar din kod (t.ex. javascript om du är en webbapp)



  1. Hur man döljer MySQL Connection String- Användarnamn och lösenord på GitHub (Java)

  2. Kan inte skapa tabell med preparerat Statement

  3. Hur man använder Master/Slave doctrine2-konfigurationer från Symfony2 Console-kommandon

  4. Ska jag indexera primärnyckelkolumner i Oracle