Galera tenho uma dúvida sobre conexão com o banco de dados, ela surgiu conversando com um amigo, segundo ele é melhor deixar uma conexão aberta na classe principal e passar ela para os formulários, eu já acho que o mais ideal é cada lugar que for usar abrir uma conexão. Enfim, qual é o mais comum que o pessoal usa para aplicações desktop (não é web!!).
Caso alguém de alguma sugestão seria de muito bom grado algum tutorial.
Eu trabalho com uma conexão na classe principal, onde todos os formulários da aplicação resgatam essa conexão, acessam e utilizam, isso evita que a aplicação tenha várias conexões simultaneamente abertas ao mesmo tempo para um único utilizador.
Mas este é um conceito meu, cada um trabalha da maneira em que acha mais apropriado de acordo com cada cenário.
SoullessBR
Obrigado Jonathan, você teria um exemplo de como resgata essa conexão? Obrigado.
Jonathan_Medeiros1 like
Exemplo bem simples que já utilizei bastante!
Faço a instancia da conexão na principal:
ConexaoOracle connection = new ConexaoOracle();
e passo nos construtores dos forms a instância de conexão por parâmetro.
publiccadCliente(ConexaoOracleconn){}
chamando o form cadCliente com parâmetro de conexão com o BD.
newcadCliente(connection);
igorventurelli2 likes
Cara, até onde sei, conexões com o banco de dados devem ser stateless.
Abra, faça o que tem que fazer e feche-a.
Não deixe conexões abertas.
É por isso que existem pools de conexões. Você usa e devolve para o pool. Senão não existiria o pool.
Solucao aceita
Gilian_Marques2 likes
Olá como igorventurelli disse, abra a conexão faça o que precisa e depois feche, do jeitinho que a sua mãe te ensinou com as coisa na infância. Você pode usar o padrão singleton para resgatar a mesma instância do banco. Abaixo um exemplo mais claro caso tenha fica alguma duvida
privatestaticSuaClasseDeConexaoComDBInstancia=null;publicstaticSuaClasseDeConexaoComDBgetInstancia(){if(Instancia==null){Instancia=newSuaClasseDeConexaoComDB();}returnInstancia;}//construtor privado para que nao possa ser instaciada de fora da classeprivateSuaClasseDeConexaoComDB(){//faça coisas}
Espero ter ajudado
SoullessBR
Entendido galera, muito obrigado, o melhor mesmo então pé abrir a conexão executar a query e fechar.
Dando uma pesquisada vi o tal do connection pool (C3p0 no caso), isso é eficiente para aplicação desktop? Porque testei ele e notei que pra cada pc que abre o programa ele cria 3 conexões com o database.