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??
para que vc vai usar a mesma conexão?
o que vai fazer que não pode abrir uma nova??
R
Renatorcm
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.
R
Renatorcm
import java.sql.*;
public class ConexaoDAO {
privatestaticfinalStringdrv="org.gjt.mm.mysql.Driver";privatestaticfinalStringurl="jdbc:mysql://127.0.0.1:3306/db_vendas";privateConnectioncon;publicbooleanconectar(){try{Class.forName(drv);con=DriverManager.getConnection(url,"root","");System.out.println("Conectou ao banco com sucesso!");returntrue;}catch(ClassNotFoundExceptione){e.printStackTrace();returnfalse;}catch(SQLExceptione){e.printStackTrace();returnfalse;}}publicbooleandesconectar(){try{con.close();System.out.println("Desconectou com o banco!!");returntrue;}catch(SQLExceptione){e.printStackTrace();returnfalse;}}
}
andredeividi
Aconselho que essa classe seja um Singleton.
abraço
mister_m
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].