| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 14:49:27
|
von.juliano
GUJ Master
![[Avatar]](/images/avatar/efb61dd984183066a8815190a28bd956.jpg)
Membro desde: 15/01/2007 13:31:32
Mensagens: 1266
Offline
|
Pessoal, quando uso CallableStatement, gostaria de poder logar a chamada da sp com dados que são passados para ela. Exemplo:
Não encontrei nada assim pronto, alguém já viu? Se não, alguém sabe como posso fazer isso?
Obrigado!
This message was edited 3 times. Last update was at 14/01/2008 10:12:16
|
É difícil manter-se religioso quando algumas pessoas simplesmente não são carbonizadas por raios!
Desenvolvendo software de forma simples! - http://vonjuliano.wordpress.com/ |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 15:51:58
|
Pedrosa
JWizard
![[Avatar]](/images/avatar/2b763288faedb7707c0748abe015ab6c.jpg)
Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline
|
O que exatamente você precisa Juliano não entendi sua dúvida?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 16:04:44
|
fabim
GUJ Master
![[Avatar]](/images/avatar/d4e3e8180a65648886ff348c7a6bbff5.jpg)
Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline
|
Pedrosa wrote:O que exatamente você precisa Juliano não entendi sua dúvida?
ele quer uma String que represente o SQL que será executado.
|
ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται
Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 16:16:58
|
fabim
GUJ Master
![[Avatar]](/images/avatar/d4e3e8180a65648886ff348c7a6bbff5.jpg)
Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline
|
http://www.javaworld.com/javaworld/jw-01-2002/jw-0125-overpower.html?page=1
This message was edited 1 time. Last update was at 10/01/2008 16:18:09
|
ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται
Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 16:18:00
|
Pedrosa
JWizard
![[Avatar]](/images/avatar/2b763288faedb7707c0748abe015ab6c.jpg)
Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline
|
Teste a solução acima Juliano, mas parece que é indicado somente em modo debug.
This message was edited 1 time. Last update was at 10/01/2008 16:28:08
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 16:19:21
|
fabim
GUJ Master
![[Avatar]](/images/avatar/d4e3e8180a65648886ff348c7a6bbff5.jpg)
Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline
|
Pedrosa wrote:É Possivel obter sem jogar os ? e setando os valores, que eu saiba daria para fazer assim:
Essa String só deve obter os valores no driver via getAlguma coisa, o que foge do alcance, ou estou falando besteira?
Isso quebraria o principal beneficio de se setar os parametros sem precisar esquentar a cabeça com aspas ou com datas.
|
ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται
Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 16:22:16
|
von.juliano
GUJ Master
![[Avatar]](/images/avatar/efb61dd984183066a8815190a28bd956.jpg)
Membro desde: 15/01/2007 13:31:32
Mensagens: 1266
Offline
|
Eu preciso executar o seguinte procedimento:
- Obter o CallableStatement à partir da String que contém a chamada da sp: - Setar os respectivos valores: - E aqui está o meu problema, de alguma forma eu preciso pegar do CallableStatement a String que é a chamada da sp, já com os valores setados, o que, suponho, seria algo + ou - assim:
O pessoal aqui pediu isso p/ poder logar essa informação.
|
É difícil manter-se religioso quando algumas pessoas simplesmente não são carbonizadas por raios!
Desenvolvendo software de forma simples! - http://vonjuliano.wordpress.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 16:27:30
|
von.juliano
GUJ Master
![[Avatar]](/images/avatar/efb61dd984183066a8815190a28bd956.jpg)
Membro desde: 15/01/2007 13:31:32
Mensagens: 1266
Offline
|
fabiocsi wrote:
Pedrosa wrote:É Possivel obter sem jogar os ? e setando os valores, que eu saiba daria para fazer assim:
Essa String só deve obter os valores no driver via getAlguma coisa, o que foge do alcance, ou estou falando besteira?
Isso quebraria o principal beneficio de se setar os parametros sem precisar esquentar a cabeça com aspas ou com datas.
Sem dúvidas. Fazer assim está fora de questão.
Tb creio que isso esteja à cargo do driver, a dúvida é, como alcançar essa informação???
|
É difícil manter-se religioso quando algumas pessoas simplesmente não são carbonizadas por raios!
Desenvolvendo software de forma simples! - http://vonjuliano.wordpress.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2008 16:28:46
|
von.juliano
GUJ Master
![[Avatar]](/images/avatar/efb61dd984183066a8815190a28bd956.jpg)
Membro desde: 15/01/2007 13:31:32
Mensagens: 1266
Offline
|
Obrigado pelo artigo fabiocsi, vou ver se consigo resolver com ele, e se conseguir (tomara! ) coloco a solução aqui!
|
É difícil manter-se religioso quando algumas pessoas simplesmente não são carbonizadas por raios!
Desenvolvendo software de forma simples! - http://vonjuliano.wordpress.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2008 10:17:22
|
oyama
Virtual Machine Man
Membro desde: 19/04/2005 10:11:09
Mensagens: 572
Offline
|
Como é só para log, acho que voce poderia tentar usar um wrapper para o driver de banco de dados do tipo do p6spy.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2008 10:28:18
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
A razão pela qual o Java não define um método para visualizar a string resultante da substituição dos parâmetros no SQL é que muitas vezes ela não ocorre (pelo menos para os bancos de dados Oracle ou MS SQL Server).
Em vez disso, os parâmetros são mandados em forma binária e o servidor SQL pega esses dados, assim como a string com os "?", verifica se a string existe em um cache de queries e procedures compiladas, e monta tudo.
Eu sei que isso é bom para depuração, mas se você realmente precisa disso, é necessário usar algo que intercepte esses parâmetros, como o tal do p6spy.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2008 10:47:31
|
Yky Mattshawn
Virtual Machine Man
Membro desde: 18/12/2006 03:34:14
Mensagens: 651
Localização: São Sebastião do Caí / RS
Offline
|
Assim como o thingol falou, a recuperação dessa String não ocorre porque ela é processada totalmente pelo servidor.
Exemplo: MySQL. Claro que o driver executa as operações em modo binário, mas vejam: já usaram PreparedStatement's reais do MySQL?
São assim:
Notem que em nenhum momento existiu realmente uma instrução pronta com os valores. A instrução executada pelos PreparedStatement's é resolvida diretamente no servidor. Então, mesmo que o driver para o banco executasse tudo enviando String's de comandos (ou seja, nada em modo binário), ainda assim a instrução nunca existiria.
This message was edited 2 times. Last update was at 11/01/2008 10:50:15
|
Yky Mattshawn [ Compusoft - Desenvolvimento de Sistemas Empresariais ]
"Tudo que é ortodoxo ou heterodoxo demais gera heresia."
Bixo 2010 - Ciência da Computação - Feevale/RS e Unisinos/RS |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2008 11:41:46
|
von.juliano
GUJ Master
![[Avatar]](/images/avatar/efb61dd984183066a8815190a28bd956.jpg)
Membro desde: 15/01/2007 13:31:32
Mensagens: 1266
Offline
|
oyama wrote:Como é só para log, acho que voce poderia tentar usar um wrapper para o driver de banco de dados do tipo do p6spy.
Obrigado pela sugestão, mas creio que não posso usar o p6spy. Suponho que seja um jar (ou não? Não consegui baixar pq o link do download está fora!), e devido à restrições no cliente não posso adicionar qualquer jar no projeto. Tenho que usar até mesmo versões do Struts e do iText pré-definidas!
Acho que o link que o fabiocsi passou é a melhor solução, assim que terminar de implementar posto aqui! Obrigado à todos!
|
É difícil manter-se religioso quando algumas pessoas simplesmente não são carbonizadas por raios!
Desenvolvendo software de forma simples! - http://vonjuliano.wordpress.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2008 11:45:34
|
von.juliano
GUJ Master
![[Avatar]](/images/avatar/efb61dd984183066a8815190a28bd956.jpg)
Membro desde: 15/01/2007 13:31:32
Mensagens: 1266
Offline
|
thingol wrote:A razão pela qual o Java não define um método para visualizar a string resultante da substituição dos parâmetros no SQL é que muitas vezes ela não ocorre (pelo menos para os bancos de dados Oracle ou MS SQL Server).
Em vez disso, os parâmetros são mandados em forma binária e o servidor SQL pega esses dados, assim como a string com os "?", verifica se a string existe em um cache de queries e procedures compiladas, e monta tudo.
Eu sei que isso é bom para depuração, mas se você realmente precisa disso, é necessário usar algo que intercepte esses parâmetros, como o tal do p6spy.
Yky Mattshawn wrote:Assim como o thingol falou, a recuperação dessa String não ocorre porque ela é processada totalmente pelo servidor.
Exemplo: MySQL. Claro que o driver executa as operações em modo binário, mas vejam: já usaram PreparedStatement's reais do MySQL?
São assim:
Notem que em nenhum momento existiu realmente uma instrução pronta com os valores. A instrução executada pelos PreparedStatement's é resolvida diretamente no servidor. Então, mesmo que o driver para o banco executasse tudo enviando String's de comandos (ou seja, nada em modo binário), ainda assim a instrução nunca existiria.
Obrigado pela aula pessoal! :thumbup:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 10:11:29
|
von.juliano
GUJ Master
![[Avatar]](/images/avatar/efb61dd984183066a8815190a28bd956.jpg)
Membro desde: 15/01/2007 13:31:32
Mensagens: 1266
Offline
|
Pessoal, consegui resolver com o site http://www.javaworld.com/javaworld/jw-01-2002/jw-0125-overpower.html?page=1 que o fabiocsi passou, não vou colocar como ficou aqui pq tem mais de 800 linhas (a classe tem que implementar a interface CallableStatement, são mais de 150 métodos! ), mas com uma rápida lida no site ninguém vai ter dificuldades para implementar a solução!
Obrigado à todos!
|
É difícil manter-se religioso quando algumas pessoas simplesmente não são carbonizadas por raios!
Desenvolvendo software de forma simples! - http://vonjuliano.wordpress.com/ |
|
|
 |
|
|