Ao tentar mandar Aspas simples (’) para a string sql, por exemplo: Eduardo’s House
Chega no comando SQL e Fica.
“SELECT * FROM tabInfo WHERE nmInfo = '” + variável + "’;
a variável possui a aspa simples(’), o que faz o comando ser fechado. e dar zica em tudo.
Existe como eu passar a aspa simples para o banco de dados(SQL Server)?
A única coisa que pensei é dar um replaceAll por uma sequencia de caracteres, o problema é que no banco ficaria esquisito!
Att,
Usa PreparedStatement.
PreparedStatement pstmt = connection().prepareStatement("SELECT * FROM tabInfo WHERE nmInfo = ?");
pstmt.setString(variavel);
Não vai rolar por causa das aspas. E não se deve usar o Statement que ele é passível de SQLInjection. E também é mais complicado você ficar separando no Select aspas simples de aspas duplas. Com PreparedStatement não precisa disso, usa o ? e depois coloca no método a variável que representará o valor do ?.
Só uma coisa, coloquei errado o método, faltou um parametro:
PreparedStatement pstmt = connection().prepareStatement("SELECT * FROM tabInfo WHERE nmInfo = ?");
pstmt.setString(1, variavel);
Caso no select você tenha mais de um teste, faça assim:
PreparedStatement pstmt = connection().prepareStatement("SELECT * FROM tabInfo WHERE nmInfo = ? AND descricao = ? AND nome = ?");
pstmt.setString(1, variavel);
pstmt.setString(2, descricao);
pstmt.setString(3, nome);
É isso ai mesmo.
Depois quando tiver evoluindo estuda Hibernate/JPA que ele facilitará e muito sua vida nesse sentido.
brigado rapaziada, obrigado mesmo.
Irei estuda o impacto que isso vai ter no código. valeu!
é isso ai , use o preparedStetment e iras resolver o problema de Sql injection
Cuidado para não por aspas entre as interrogações e sempre respeitar os indices dos mesmos!
Depois é so colocar resolvido ai no Post