Jdbc

7 respostas
hicans
Eu tenho essa classe, que na minha ideia, deveria conectar ao banco:
public class BD_Cds
{
  public void ControlaBancoDados()
  {
    Connection con = null;
    try
    {
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

      con = DriverManager.getConnection(
          "jdbc:odbc:ListaCdsPJ",
          "", //nome do usuario
          ""); //senha
    }
    catch (SQLException e)
    {
      e.printStackTrace();
    }
    catch (ClassNotFoundException cnfe)
    {
      System.out.println("Nao foi encontrado o driver do Banco.");
    }
  }
E queria q essa classe ficasse soh pra fazer isso, e as outras pudessem usar o "con" pra criar o Statement , mas como faço isso...??? E se pudessem colocar um exemplo, uma nova classe com um novo metodo, eh q ai q estah a minha duvida... e q naum consigo passar a diante... PS: essa duvida eh aki ou devo tirar esse tipo de duvida no java basico... valeu... e bom final de fim de semanha :D :( PS:E se tiverem uma opçao melhor da minha primeira classe eu ficaria mto grato...

7 Respostas

volnei

Olha, existem maneiras muito melhores de se gerenciar conexções como banco, mais acho que você está querendo algo simples errei?

public interface ConnectionProvider{
   public Connection getConnection() throws Exception; 
}
public class DirectConnection implements ConnectionProvider {
  static {
    try {
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    } catch (ClassNotFoundException e) {
      System.err.println("Erro registrando o driver, não é possivel recuperar uma conexão");
    }
  }

  public Connection getConnection() throws Exception {
    return DriverManager.getConnection("jdbc:odbc:ListaCdsPJ", "", "");
  }
}
public class ConnectionProviderFactory{
  public static ConnectionProvider getConnectionProvider(){
     return new DirectConnection();
  }
}

para utilizar tudo isso em suas classes use:

...
ConnectionProvider conProvider = ConnectionProviderFactory.getConnectionProvider();
Connection con = conProvider.getConnection();
...

Deixe sempre a excessão estourar para a camada mais alta da aplicação, é mais fácil de gerenciá-las e o stackTrace fica mais completo.

Seguindo esse exemplo você pode substituir o provedor de conexões sem precisar alterar seu código, eu aconselho você dar uma olhada no c3p0 que é um pool de conexões muito fácil de se configurar.

Qualquer coisa, dá um toque.

hicans

Valeu mesmo as dicas e os exemplos, vou tentar executar.
Eu vou tentar estudar sua dica, q faz parte do hibernate, correto?
E queria saber se alguem sabe um tutorial massa pra aprender “interface”, e q naum sei usar ainda…
E mto obrigado pela resposta!!!

Lucas_Teixeira

Meio off… porém nunca se esqueca de fechar estas conexoes…

Desto modo é muito fácil conectar um monte de coisa no banco e deixar ele sobrecarregado… crie nesta classe da conexao um metodo para fechá-la…

:stuck_out_tongue:

hicans

Eu estava pensando em cada vez q usa-se o banco eu fecharia em seguida…
Por isso queria essa classe… pra cada vez q fosse acessar o banco eu conectaria…
Estah certo o meu pensamento???

Lucas_Teixeira

Sim, a classe do Volnei está te retornando uma conexão…

use-a, e feche-a!

volnei

hicans:
Eu vou tentar estudar sua dica, q faz parte do hibernate, correto?
E queria saber se alguem sabe um tutorial massa pra aprender “interface”, e q naum sei usar ainda…
E mto obrigado pela resposta!!!

Nada a ver com Hibernate! É um pool de conexões independente.

Quanto a aprender sobre interface, qualquer livro de OO tem e o Google tambem.

:wink:

hicans

Valeu galera…

Criado 19 de dezembro de 2004
Ultima resposta 21 de dez. de 2004
Respostas 7
Participantes 3