Problemas com mysql em aplicação swing

5 respostas
D

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á.

5 Respostas

thiagopassosp

para que vc vai usar a mesma conexão?
o que vai fazer que não pode abrir uma nova??

R

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

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;
    }
}

}

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].

Criado 21 de junho de 2007
Ultima resposta 22 de jun. de 2007
Respostas 5
Participantes 5