Conexão Java com MySQL, acesso por classes

6 respostas
leonardomopaca

Bom dia galera, blz??

Intaum, eh o seguinte…
Eu tenho uma classe de conexão que funciona direitinho, conecta no MYSQL legal sem problema, na mesma classe eu consigo fazer consultas etc no banco, mas eu quero fazer isso através de outra classe… se alguém puder me ajudar tow agradecido, segue o código

package br.com.xxx;

import <a href="http://java.io">java.io</a>.<em>;

import java.sql.</em>;

public class ConexaoBD {

public static void main(String args[]) throws SQLException{
    Connection conn = null;
    try {
        // Carregando o JDBC Driver
        String driverName = "org.gjt.mm.mysql.Driver"; // MySQL MM JDBC driver
        Class.forName(driverName);

        // Criando a conexão com o Banco de Dados
        String serverName = "xxx";
        String mydatabase = "xxx";
        String url = "jdbc:mysql://" + serverName + "/" + mydatabase; // a JDBC url
        String username = "xxx";
        String password = "xxx";
        conn = DriverManager.getConnection(url, username, password);
        //se ok ele manda essa msg
    System.out.println("Conectado!");
        
    } catch (ClassNotFoundException e){
        //Driver não encontrado
        System.out.println("O driver expecificado não foi encontrado.");
        
    } catch (SQLException e) {
        //Não está conseguindo se conectar ao banco 
        System.out.println("Não foi possível conectar ao Banco de Dados"); 
    }

    // essa parte eu quero fazer em outra classe, tipo ConsultaNome.java


    String sql = "SELECT * FROM nome_tabela";
    PreparedStatement stmt = conn.prepareStatement(sql);
    ResultSet rs= stmt.executeQuery();
    
    while(rs.next()){
        System.out.println(rs.getString("nome_do_campo"));
    }
}

}

Valeu galera!!!
Aguardo a ajuda :slight_smile:

[]s

6 Respostas

B

Brother…

No site da caleu tem uma apostila que explica direitinho e passo a posso isso que você quer fazer ^^

mesmo que eventualmente a intenção não for web, pode ler que eu garanto que você vai terminar sabendo fazer ^^

Se não funcionar posta aew que agente ajuda ;]

Abs

mja_marcelo

Vc pode fazer o seguinte:
na classe ConexaoBD, em vez de vc criar um metodo main, vc cria um metodo "getConnection":

public static Connection getConnection() throws SQLException {
     try {
         Class.forName("jdbc:mysql://localhost/teste");
         return DriverManager.getConnection("com.mysql.jdbc.Driver",
"root","");
     } catch (ClassNotFoundException e) {
         throw new SQLException(e.getMessage());
     }

}

Depois... na classe q vc vai usar uma sql... vc cria um construtor assim:

EX:

public class Cliente {
   public Cliente() {
        Connection conn = ConexaoBD.getConnection();
  }
}

ou seja, toda vez q vc instanciar cliente, a classe se conecta ao BD para vc fazer os seus "SELECTS"...

Espero ter te ajudado... t+

B

Uma opção muito interessante e muito utilizada é você trabalhar com 3 classes…

Uma classe ConnectionFactory, com o método getConnection que retorna a conexão, uma classe de negócios e uma classe de acesso a dados.

Aí em cuma classe “controladora” da lógica da aplicação você faria algo como:

Cliente cliente = new Cliente(param1, param2,...);  // Instancia o cliente já sentando os valores

ClienteDAO dao = new ClienteDAO(); // Cliente DAO conterá os métodos que possuem os statements para acessar o banco de dados
dao.adiciona(cliente);  //o método recebe um objeto cliente e adiciona cada atributo em seu respectivo campo no banco de dados...

É isso ^^
Espero ter sido útil xD

Abs
Well

B

Só pra complementar, faça ClienteDAO ter um atributo Connection, e no constructor rode o método getConnection da sua fábrica de conexões…

Qq coisa tamo aew… Na apostila tem bem detalhado tbm… Acho que compensa investir um tempinho nela ;D

Abs
Well

caique_castanho

kra o que você pode fazer é uma classe Conexao() e parametrizar informações como banco, user, senha e porta do servidor ou faça um construtor pra isso.
Além disso crie um método static conectar() que retorne a conexão, quando quiser efetuar uma conexão basta chamar o método conectar da classe Conexao() que retorna a conexao, por exemplo:
[/code]
import java.sql.*;
import javax.swing.JOptionPane;
public class Conexao
{
/*atributo de classe, usado para conesão com o banco */
private java.sql.Connection con;
String ip;
String banco;
String user;
String senha;
String porta;

public Conexao(String ip, String banco, String user, String senha, String porta)
{
this.ip = ip;
this.banco = banco;
this.user = user;
this.senha = senha;
this.porta = porta;
}

public void setIp(String ip)
{
this.ip = ip;
}

public void setBanco(String banco)
{
this.banco = banco;
}

public void setUser(String user)
{
this.user = user;
}

public void setSenha(String senha)
{
this.senha = senha;
}

public void setPorta(String porta)
{
this.porta = porta;
}

/*método conectar, usado para conexão no banco de dados*/
public java.sql.Connection conectar()
{
try
{

Class.forName("com.mysql.jdbc.Driver"); /*carregando a classe do driver jdbc do mysql*/
con = java.sql.DriverManager.getConnection("jdbc:mysql:" + ip + "/" + porta + ":" + banco, user, senha);
}
catch(java.lang.ClassNotFoundException e)
{

JOptionPane.showMessageDialog(null, "Firebird JCA-JDBC driver não encontrado no class path");
}
catch (java.sql.SQLException e)
{
JOptionPane.showMessageDialog(null, "Impossível estabelecer conexão. Verifique as configuraçõs. (SQLException)");
}
return con;
}

/*método usado para desconectar com o banco de dados*/ public void desconectar() { try { con.close(); JOptionPane.showMessageDialog(null, "Logoff efetuado com sucesso."); } catch(java.sql.SQLException e) { JOptionPane.showMessageDialog(null, "Não foi possível fechar a conexão!"); } } }
Pra realizar consultas ou inserções vc cria classes pra isso e é só instanciar um objeto da classe conexão. exemplo:

Conexao novacon = new Conexao("localhost", "meubanco", "user", "senha","3306");
java.sql.Connection con = novacon.conectar();
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs= stmt.executeQuery();
novacon.desconectar();

[code]

até mais...

leonardomopaca

IMprimi e vou dar uma olhada nela…

tow mais confuso na organização mesmo…
:shock:

[]s

Criado 1 de dezembro de 2006
Ultima resposta 1 de dez. de 2006
Respostas 6
Participantes 4