| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/09/2004 11:16:43
|
gastaojuniorPJ
What is classpath?
![[Avatar]](/images/avatar/0)
Membro desde: 15/09/2004 00:00:00
Mensagens: 7
Localização: 16985084
Offline
|
Olá amigos. Estou com uma dúvida sobre o connection.createStatement() e gostaria de uma ajuda de vocês. Vamos lah.
Tenho uma classe que tem a função de realizar a conexão com o banco de dados e me retornar um connection, o nome dessa classe eh LRFConexao, segue o codigo:
Estou utilizando essa classe da seguinte forma:
Agora vamos o problema:
Mais ou menos a cada duas vezes que executo o createStatement(), monitorando as conexões ao banco de dados, vejo que é criada uma outra conexão. Como isso é possível se chamei o objeto de conexão somente uma vez? O createStatement() cria uma conexão interna para executar os seus processos? Algo ainda mais interessante, quando eu nao fecho o Statement (vlstmt_query.close()), mesmo fechando a conexão(vlconn_conexao.close()) as conexões realizadas (creio eu) pelo statement continuam lah. Não deveriam ser fechadas, já que a conexão foi fechada???
Agora se eu descomentar o codigo que fecha o statement
//Fechando o Statement
vlrst_resultado.close();
vlstmt_query.close();
acontece algo interessante, são criadas somente duas conexões, uma no momento da conexão e outra no momento do createStatement(), mesmo chamando o createStatement() novamente, ficam somente duas conexoes e quando fecho a conexão, essa conexao do statement também é fechada.
Fiquei curioso sobre isso. Alguém pode ajudar esse iniciante curioso?
Se para criar um statement preciso de uma conexao, pra que o statement está criando uma conexao com o banco?
Saúde e Paz
Gastão Júnior
*Editado para adicionar o bbcode ;)
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/09/2004 10:48:31
|
gastaojuniorPJ
What is classpath?
![[Avatar]](/images/avatar/0)
Membro desde: 15/09/2004 00:00:00
Mensagens: 7
Localização: 16985084
Offline
|
Senhores, se alguém se interessou por esse problema, me esqueci de dizer que estou usando o drive JDBC da microsoft. Considerando isso, baixei um drive trial da atinav(http://www.atinav.com/) e somente substitui a conexão e realizei novamente o teste, olha que interessante:
1) Estou utilizando o metodo ResultSetMetaData.getColumnClassName() para mapear os tipos do SQLServer para classes do java, constatei que esses drives mapeam os tipos de formas diferentes.
2) No caso da conexão "extra" criada pelo createStatement() com o drive da microsoft, não é criada utilizando o drive da atinav.
Será que temos um bug no drive da microsoft????
Estarei fazendo o teste com o drive da FreeTDS.org e logo após coloco os resultados por aqui.
Saúde e Paz
Gastão
|
|
|
 |
|
|
|
|