No meu sistema, estou gerando dinamicamente uma query sql conforme os dados recebidos
de um arquivo xml…
só que o usuário…está digitando na hora de cadastrar o nome do cliente por exemplo com apóstrofes…
Ex: Nome Fantasia = Bar Sinuca’s
então quando recebo o xml com esses dados, eu gero uma query sql
Insert … bla bla bla … values(…
e entra esse nome fantasia com o bendito apóstrofe no meio causando assim o erro…
Então a pergunta é… tem como inserir o apóstrofe no nome, tipo, substituindo por algum ascii ou sou obrigado a retirá-lo de cena?
Apóstrofe é uma figura de linguagem que designa coisas como “Ave Maria” (Veja aqui).
Você certamente não está tendo problema com isto, mas com um apóstrofo.
Isto ocorre por que você provavelmente use JDBC com java.sql.Statement e ele é, além de inseguro, bem chato.
Sugiro que estude java.sql.PreparedStatement, isso já resolverá teu problema.
Na verdade estou usando o Hibernate…mas como não sei qual é o tipo de dado que está vindo no xml…e para não dar conflito de chaves primárias no banco, pois estou trabalhando com dois bancos, tendo que manter as suas chaves… sendo que a de um banco vai de 0 a 100000 e a do outro vai de 100000 a 200000… então gero um insert dinâmico e digo pro hibernate executar isso…
Mas mesmo com nativeQuery é possível determinar os parâmetros que se está usando.
Dá uma olhada aqui