Estou aqui fazendo uns prepared statements no oracle, e ele parece nao fazer o scaping de apostrofo
tipo se eu dou um :
PreparedStatement ps = connection.prepareStatement("INSERT INTO BLAH BLAH WHERE BLAH = ?");
ps.setObject(1, "asdasasd' asdsadsd");
nao consigo executar isso! porque ele vai reclamar como se houvesse um fecha aspas simples na query. porem com o driver do mysql e do postgresql, eles mesmos fazem esse scaping. Quem esta certo nessa?
estou usando o classes12.jar
Estou usando o setObject. Nao usei setString, mas teoricamente o setObject deveria chamar o setString por milhares de instanceofs
O capitulo 6 fala o q o driver tem q seguir
O capitulo 13 fala sobre os statements e como funciona os metodos set<Type>.
O apendice B, tabela 2 (b-2) mostra a tabela de conversao JavaType->JDBC e logo abaixo vem as tabelas de conversao setObject()… mas nada disso obriga o escape de quotes…
nao funciona nem com toString
estou EMBASBACADO. serio mesmo.
se isso nao eh padrao, pq o mysql e o postgre colocam? isso soh piora a situacao, pq no dia que eu trocar minha aplicacao de mysql pra oracle, ou vice versa, NAO vai funcionar
Eu usava muito prepared statement incluindo string com aspas simples e nunca tive nenhum problema a respeito.
Não sei dizer porque comigo funcionava e com você não funciona, mas posso dizer que “já vi funcionar”.
Acho que se você continuar procurando o problema acaba achando…
[quote=“Bani”]
Acho que se você continuar procurando o problema acaba achando…[/quote]
Achei.
Ele faz o auto scaping SIM. O problema eh que chamo uma stored procedure, essa procedure pega o elemento, e tenta inseri-lo com outro insert. Soh que ai, essa variavel que o PL/SQL tem, NAO esta escapada, logo, POFFF.