Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como capturar/codificar caracteres especiais para SQL Server no aplicativo java?


Eu estou supondo que você construa o SQL de alguma maneira como
String sql = "Select Column from tab where column='" + StringParm + "'"; 

Ou algo parecido? Se você fizer isso, estará aberto a todos os tipos de exploits e também verá um comportamento como você descreve, onde a string resultante não é mais SQL válido. Você teria que escapar do parâmetro fornecido pelo usuário primeiro.

A melhor solução é usar PreparedStatements, então você faz
Statement stmt = conn.prepareStatement("Select Column from tab where column=?");
stmt.setString(1,StringParam);

Não consigo ver nenhuma maneira rápida de resolver seu problema sem alterar nenhum código Java, barra talvez escapando / higienizando a entrada antes que ela atinja seu código (por exemplo, javascript se você for um webapp)