Olá pessoal,
estou com um baita problema… talvez por conta da minha inexperiência com swing.
Estou com uma aplicação que acessa um BD Mysql. Eu faço o login do BD na janela principal, onde eu abro uma conexão, faço uso das tabelas do bd e fecho a conexão apenas quando o programa é fechado. Tudo funcionando ok. O problema é que eu abro outras JInternalFrames no JDesktopPane principal. E eu quero acessar a conexão aberta no JFrame principal anterior nessa internalFrame, mas não sei como. Aliás, sei, fazendo vários getParent() até q chega na JFrame principal do programa (onde eu instanciei a Connection). Mas sei que deve haver alguma solução bem melhor.
Alguém com alguma luz??
Agradeço desde já.
para que vc vai usar a mesma conexão?
o que vai fazer que não pode abrir uma nova??
Ola,
primeiro eu acho que vc deveria criar uma classe conexão, com os métodos conectar e desconectar, assim sempre que vc precisasse fazer uma conexão seria só você instanciar está classe e utilizar os seus respectivos métodos.
visando segurança você deixaria a conexao aberta somente quando fosse fazer uma pesquisa ou inserir dados no banco.
import java.sql.*;
public class ConexaoDAO {
private static final String drv = "org.gjt.mm.mysql.Driver";
private static final String url = "jdbc:mysql://127.0.0.1:3306/db_vendas";
private Connection con;
public boolean conectar(){
try{
Class.forName(drv);
con = DriverManager.getConnection(url,"root","");
System.out.println("Conectou ao banco com sucesso!");
return true;
}catch(ClassNotFoundException e){
e.printStackTrace();
return false;
}catch(SQLException e){
e.printStackTrace();
return false;
}
}
public boolean desconectar(){
try{
con.close();
System.out.println("Desconectou com o banco!!");
return true;
}catch(SQLException e){
e.printStackTrace();
return false;
}
}
}
Aconselho que essa classe seja um Singleton.
abraço
Existem vários problemas na sua abordagem:
[list]Se cair o banco, a conexão se perde e nada mais funciona[/list]
[list]O acesso ao banco de dados está amarrado com sua interface gráfica[/list]
[list]Há uma dependência enorme entre as classes da sua aplicação[/list]
[list]Você está trabalhando em baixo nível, acessando diretamente o banco e manipulando diretamente a interface gráfica[/list]
Recomendo que você siga boas práticas de desenvolvimento, criando classes e uma separação mínima de camadas e abstraindo o acesso a banco e manipulação da GUI. Uma forma de fazer isso é usando Hibernate e [https://genesis.dev.java.net]genesis[/url].