Organizar código, me ajudem

8 respostas
Yag

Bem galera, o problema é que toda vida que vou inserir, ler, atualizar dados no banco de dados, eu realizo uma nova conexão no botao correspondente. vejam:

Salvar

try{
       Class.forName("com.mysql.jdbc.Driver");
       Connection as = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/yago","root", "yago");  
       Statement yago = (Statement) as.createStatement();
       yago.executeUpdate("insert into favorito (idfavorito,link,ant) values ('"+jTextField1.getText()+"','"+jTextField2.getText()+"','"+jTextArea1.getText()+"')"); 
       JOptionPane.showMessageDialog(null, "CADASTRO REALIZADO");
       jTextField1.setText("NOME - TITULO - DESCRIÇÃO");
       jTextField2.setText("LINK");
       jTextArea1.setText("ANOTAÇÕES;");
       as.close();
        }
catch(Exception e){
    System.out.println("erro");
    
}

Selecionar

try{
     
     Class.forName("com.mysql.jdbc.Driver");
     Connection deletar = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/yago","root","yago");
     Statement apagar = (Statement) deletar.createStatement();
     ResultSet rst = apagar.executeQuery("select * from favorito where (idfavorito)  = ('"+jTextField1.getText()+"')"); 
     apagar.executeUpdate("delete from favorito where (idfavorito) = ('"+jTextField1.getText()+"')");
     JOptionPane.showMessageDialog(null, "LINK REMOVIDO");
 jTextField1.setText("NOME - TITULO - DESCRIÇÃO");
       jTextField2.setText("LINK");
       jTextArea1.setText("ANOTAÇÕES;");
 }
 catch(Exception c){
     System.out.println("Erro");
 }

E assim sucessivamente, o que eu gostaria de sabe é se existe algumas maneira de eu declarar apenas uma vez a parte da conexão e depois ficar chamando,.
Apenas essa parte:

Class.forName("com.mysql.jdbc.Driver");
     Connection deletar = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/yago","root","yago");
     Statement apagar = (Statement) deletar.createStatement();

Deichar essa parte padronizada para apenas ir chamando, assim meu codigo ficaria menor e mais organizado.

8 Respostas

jweibe

Cara da uma pesquisa aiii… Aki no GUJ tem dezenas de post sobre isso.!
Da uma pesquisa sobre Pool de Conexões… e por ai vai
Dica: Pool de Conexões

D

Você poderia criar uma classe com um método responsável pela criação das conexão, uma fábrica de conexões.
Assim você apenas chamaria esse método dessa classe toda vez que precisasse de uma conexão, sem precisar repetir esses passos que está fazendo em cada método para criação da conexão.

BrunoFurtado

Brother,

A algum tempo atrás tive de realizar um trabalho universitário que necessitava se conectar com duas bases de dados.
Para solucionar o problema, utilizei DaoFactory.
Axo que se vc der uma olhada, vai visualizar algumas soluções…

Segue o fonte.

V
public class ConnectionFactory {
	
	

	public Connection getConnection() throws SQLException {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.getMessage();
		}  
		
		System.out.println("Conectando ao banco");
		return DriverManager.getConnection("jdbc:mysql://localhost/caelum", "root","");

	
}
Com o factory você pode chama - lo através de outras classes sem precisar, ficar criando várias conexões na mão. Você pode chama-lo da seguinte forma:
ConnectionFactory con = new ConnectionFactory().getConnection();
V
public class ConnectionFactory {
	
	

	public Connection getConnection() throws SQLException {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.getMessage();
		}  
		
		System.out.println("Conectando ao banco");
		return DriverManager.getConnection("jdbc:mysql://localhost/caelum", "root","");

	
}
DaoFactory você pode chama - lo através de outras classes sem precisar, ficar criando várias conexões na mão, vc pode chama - la da seguinte forma:
ConnectionFactory  connection = new ConnectionFactory().getConnection();
[/quote]
Yag

Galera, obrigado pela atenção de todos ;D ; Mas acho que o que mais se identificou foi a resposta do vitor2908 , vou analizar e ver o que posso fazer.

A

Carinha, cuidado com isso de conexão JDBC: se você estiver usando uma aplicação Web, ela não vai escalar direito se você ficar abrindo e fechando conexão do jeito que você está fazendo.

Reforço a sugestão dada, de você olhar sobre esse negócio de pool de conexões. Procurei por “JNDI JDBC getConnection” no google e olha o que veio:

http://www.javapractices.com/topic/TopicAction.do?Id=127

Yag

abmpicoli, valeu pela dica :D; ;; mas nao e aplição web nao. :smiley:

Criado 21 de janeiro de 2012
Ultima resposta 22 de jan. de 2012
Respostas 8
Participantes 6