Duvida com conexao com o banco

8 respostas
leandro-maanaim

Pessoal tenho duas tabelas, cliente e fornecedor daí vou e instancio um objeto que ira conectar com o banco e armazenar os meus dados.

import javax.swing.JOptionPane;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;

public class Conexao
{
    private final String driver = "oracle.jdbc.driver.OracleDriver";
    private final String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
    String usuario = "usuario";
    String senha = "senha";
    public Connection conexao;
    public Statement statement;
    public ResultSet resultset;

    public boolean conectaBanco()
    {
        boolean result = true;
        try
        {
            Class.forName(driver);
            conexao = DriverManager.getConnection(url,usuario,senha);
        }
        catch(ClassNotFoundException driver)
        {
            result = false;
            JOptionPane.showMessageDialog(null,"Erro driver");
        }
        catch(SQLException fonte)
        {
            JOptionPane.showMessageDialog(null,"Erro Fonte\n"+fonte);
            result = false;
        }
        return result;
    }
    public void desconectaBanco()
    {
        try
        {
            conexao.close();
        }
        catch(SQLException erro)
        {

        }
    }
    public void executaSQL(String sql)
    {
        try
        {
            statement = conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
            resultset = statement.executeQuery(sql);
        }
        catch(SQLException erro)
        {
            JOptionPane.showMessageDialog(null,"Erro ao Executar o SQL\n"+erro);
        }
    }
}
da minha classe de clientes eu instancio um objeto

Conexao conectaCliente = new Conexao();

Conexao conectaCliente.conectaBanco();//Ou seja olha se eu entendi "Eu conectei ao banco e estou conectado.Isso Mesmo?"acho que sim.

agora eu estou na classe de fornecedor e quero pega os dados do fornecedor

Conexao conectaFornecedor = new Conexao();

Conexao conectaFornecedor.conectaBanco();//aki que vem minha duvida eu já estou conectado ao banco(Quando eu chamei o Cliente) pq que aki eu tb tenho que conectar ao banco novamente pra trazer os dados do fornecedor?

8 Respostas

P

cara ta tudo errado

as partes private final no driver da conexao? que coisa

as variaveis de conexao nao podem ser public e sim protected

e use o modelo DAO(Direct Access Object)

procure no google sobre Acesso Dao com java

leandro-maanaim

Mais esse DAO nao se usa ele só em hibernate nao? pq eu estou aprendendo em JDBC primeiro.EU nao entendi muito bem sobre o DAO não. alguem pode me explicar melhor?

leandro-maanaim

Alguem pode me explicar onde estão os erros da classe?

M

na verdade ta muito misturado,
o correto é voce criar uma classe só de conexão,
cria um método getConexao que voce chama
na tua classe Dao, e essa pode ser utilizada em JDBC também

leandro-maanaim

Alguem pode me explicar melhor o uso do DAO(ou um link que seja)?

leandro-maanaim

Alguem pode me explicar alguns exemplos?

marcelo.bellissimo

Melhor do que exemplo, leia o conceito:

“DAO (acrônimo de Data Access Object), é um padrão para persistência de dados que permite separar regras de negócio das regras de acesso a banco de dados. Numa aplicação que utilize a arquitetura MVC, todas as funcionalidades de bancos de dados, tais como obter as conexões, mapear objetos Java para tipos de dados SQL ou executar comandos SQL, devem ser feitas por classes de DAO.” (Wikipedia)

Não tem segredo…

M

mais ou menos nessa ideia, to sem o compilador aqui, pode ter a sintaxe errada, faz uns 2 meses que aprendi e sempre no compilador mas a ideia é essa:
Nessa classe pode usar o PreparedStaement, ResultSet etc etc

Classe Dao{

Connection conexao;  // atribui a conexao a uma variavel

}

public void InsereDados(Classe classe){ //passa o objeto classse por parametro
    Conexao con = new Conexao(); // instancia o objeto conexao da classe conexao
    this.conexao = con.getConection; //metodo que executa a conexao, onde é declarado  a url e tals
    String sql "insert into tabela (idtabela, nome) vlaues(?,?)";
    PeparedStatement stmt = (PreparedStatement) conexao.PrepareStatement(sql);
    
    stmt.setInt(1, classe.getId());
    stmt.setString(2,classe.getNome);
    stmt.execute();
    stmt.close();

}
}
Criado 17 de novembro de 2010
Ultima resposta 24 de nov. de 2010
Respostas 8
Participantes 4