Olá a todos, suponhamos o seguinte codigo, com a conexão já aberta:
String campo = "a";
sql = "SELECT * FROM MINHATABELA WHERE CAMPO = ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, campo);
Existe alguma forma de eu recuperar a sql, com o ? já substituido pelo metodo setString(parameterIndex, x)?
dê um toString no stmt.
ele vai devolver uma linha inteira com uns valores do jdbc + a query montada
[quote=samirrolemberg]dê um toString no stmt.
ele vai devolver uma linha inteira com uns valores do jdbc + a query montada[/quote]
Não funcionou. Coloquei isso aqui:
System.out.println(stmt.toString());
E ele imprimiu:
Ola, isso vai depender se seu jdbc tem suporte a isso.
A muito tempo atras ja fiz isso com postgres. eu estava tentando recriar aqui mas não consegui.
serviria algo como: conn.nativeSQL ?
[quote=R$chieck]Ola, isso vai depender se seu jdbc tem suporte a isso.
A muito tempo atras ja fiz isso com postgres. eu estava tentando recriar aqui mas não consegui.
serviria algo como: conn.nativeSQL ?[/quote]
O que seria esse conn.nativeSQL?
Bom dia!
Pelo que vi seu sql retorna um objeto, entao crie um método com a assinatura do tipo Object e coloque seu preparedStatement
dentro desse metodo e utilize o retorno dele para recuperar seu sql com seu parametro já substituido. De uma verificada também em
CallableStatement. pode ser útil.
Att.
de uma olhada nisso:
http://dev.mysql.com/doc/refman/5.1/en/query-log.html
e talvez isso tambem possa ajudar:
http://javafree.uol.com.br/topic-8429-JDBC-Recuperando-SQL-de-PreparedStatement.html
São metodos diferentes, o primeiro é mais certo que va funcionar, eu já usei algo assim com postgres quando se tratava de um servidor, é interessante pois é possivel ver todas as sqls que foram executadas pelo sgbd
[quote]de uma olhada nisso:
http://dev.mysql.com/doc/refman/5.1/en/query-log.html
e talvez isso tambem possa ajudar:
http://javafree.uol.com.br/topic-8429-JDBC-Recuper…-SQL-de-PreparedStatement.html
São metodos diferentes, o primeiro é mais certo que va funcionar, eu já usei algo assim com postgres quando se tratava de um servidor, é interessante pois é possivel ver todas as sqls que foram executadas pelo sgbd[/quote]
Pelo o que eu entendi, o primeiro link ele funciona com o mysql (ele pega o log que o mysql gera). Infelizmente não estou usando MySQL (mas sim o Firebird).
O segundo link eu tentei mas ele imprimiu a query com os ? nele.
[quote]Bom dia!
Pelo que vi seu sql retorna um objeto, entao crie um método com a assinatura do tipo Object e coloque seu preparedStatement
dentro desse metodo e utilize o retorno dele para recuperar seu sql com seu parametro já substituido. De uma verificada também em
CallableStatement. pode ser útil.
Att.[/quote]
Não entendi direito como eu faria isso.
Mas vou dar uma olhada no JavaDoc a respeito do CallableStatement.