Ajuda JDBC + MYSQL ou POSTGRESQL - ambos dando erro

8 respostas
J

Galera, sinceramente preciso muito da ajuda de alguém, talvez a solução seja simples, mas não consigo enxergar.
Bom tenho uma aplicação com JSF 2.1, e estou tentando fazer minha conexão com a base de dados usando JDBC.
Bom tenho um método classe onde faço todo o gerenciamento das conexões(abertura, fechamento e talz).
Meu problema: Toda vez que vai abrir uma conexão, ele da erro.
MYSQL: Acess denied to user 'ddo'@localhost using Password(YES).
POSTGRE: autenticação do tipo password falhou para usuário "'ddo'".

Bom vamos lá, tanto no mysql qto no postgre foram criados usuários(user ddo), garantidos os privileges e tudo o mais, criado a senha e tudo certo.
Também tentei com o usuario root de ambos o banco e o erro permanece. Talvez seja algo que estou fazendo errado no código, por via das duvidas segue o código

Classe: GerenciadorDeConexoes

package br.com.jragonha.bd;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;


/**
 * Classe que irá gerenciar a conexão com o banco de dados como abertura e
 * encerramento de conexões
 *
 * @author jilles.ragonha
 */
public class GerenciadorConexoes {

    /**
     * Método que carrega o driver de conexão na memória no exato momento em que
     * o objeto é criado
     */
    static {
        try {
            Class.forName("org.postgresql.Driver").newInstance();
        } catch (InstantiationException ex) {
            Logger.getLogger(GerenciadorConexoes.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(GerenciadorConexoes.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(GerenciadorConexoes.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
    
    private static GerenciadorConexoes singleton;
    private boolean  propriedadesCarregadas;
    private Properties dbProp;
    
    /**
     * Construtor da classe
     */
    public GerenciadorConexoes() {
        carregarPropriedades();
    }

    
    
    /**
     * Método para carregar o arquivo de propriedades
     */
    private void carregarPropriedades(){
        if (dbProp == null){
            dbProp = new Properties();
            try{
                dbProp.load(GerenciadorConexoes.class.getResourceAsStream("database.properties"));
                propriedadesCarregadas = true;
                
            }catch(IOException e){
                Logger.getLogger("Gerenciador Conexoes").log(Level.SEVERE, "Problemas ao carregar as propriedades do banco de dados");
                Logger.getLogger("Gerenciador Conexoes").log(Level.SEVERE,"Mensagem de exceção: ",e.getMessage());
            }
        }
    }
    
    static GerenciadorConexoes pegarInstancia(){    
        if(singleton == null){
            singleton = new GerenciadorConexoes();
        }
        return singleton;
    }
    
    /**
     * Método para abrir uma conexão com o banco de dados
     */
    Connection abrirConexao() throws SQLException {
     
        return DriverManager.getConnection(dbProp.getProperty("DB_URL"), 
                dbProp.getProperty("DB_USER"), dbProp.getProperty("DB_PWD"));
        
    }
    
    /**
     * Método que encerra uma conexão com o banco
     * @param conexao que deverá ser encerrada
     */
    void fecharConexao(Connection conexao){
        try {
            conexao.close();
        } catch (SQLException ex) {
            Logger.getLogger("GerenciadorConexoes").log(Level.SEVERE, "Problema ao encerrar a conexao");
            Logger.getLogger("GerenciadorConexoes").log(Level.SEVERE, "Mensagem da exceção:", ex.getMessage());
        }finally{
            conexao = null;
        }
    }

    
    /**
     * Método que pega valores do arquivo de Propriedades
     */
    String pegarPropriedade(String chave){
        if(!propriedadesCarregadas){
            carregarPropriedades();
        }
        return dbProp.getProperty(chave);
    }
}

Bom agora minha classe de Login

package br.com.jragonha.bd;

import br.com.jragonha.models.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author jilles.ragonha
 */
public class LoginDAO extends AbstractDAO<Usuario> {

    /**
     * Método que verifica se usuário existe no banco e realiza login
     * @param usuario - usuario que sera feito o login
     * @return true caso logado, false caso erro no login
     */
    public boolean login(Usuario usuario){
        boolean logado = false;
        Connection conexao = null;
        
        try{
            conexao = GerenciadorConexoes.pegarInstancia().abrirConexao();
            String sql = GerenciadorConexoes.pegarInstancia().pegarPropriedade("VALIDA_LOGIN");
            PreparedStatement ps = conexao.prepareStatement(sql);
            
            ps.setString(1, usuario.getNome());
            ps.setString(2, usuario.getSenha());
            
            ResultSet rs = ps.executeQuery();
            
            if (rs.next()){
                logado = true;
            }
            
        }catch(SQLException e){
            Logger.getLogger("LoginDAO").log(Level.SEVERE, "Problemas na comunicação com o banco de dados");
            Logger.getLogger("LoginDAO").log(Level.SEVERE, "Mensagem de exceção: ",e.getMessage());
        }finally{
            GerenciadorConexoes.pegarInstancia().fecharConexao(conexao);
        }
        
        return logado;
    }

Eu realmente agradecerei qualquer ajuda possível

8 Respostas

K

Seu banco está em um servidor externo a sua aplicação?

J

local

carlos.hager

no debug você garantiu que as informações de autenticação estejam chegando corretamente?[“login e password”]
e que o login tenha a devida permissão de acesso…

J

Sim, está tudo correto, por isso que não estou entendendo.
Até alterei o banco de mysql para o post para testar
e não adiantou muita coisa :frowning:

carlos.hager

tenta conectar usando algo assim direto e com os atributos hardcode mesmo apenas para testar:

Connection conn = null; try { Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/base" "usuario", "senha"); } catch (Exception e) { //TODO }

J

continua msm erro

tentei criar outro usuario
recriei o banco
mas mesmo assim nao vai

K

vc tem certeza que seu banco está rodando na mesma máquina
q vc está testando sua aplicação?

carlos.hager

então existe algum problema de configuração no seu banco;
tenta subir uma instancia sem nenhuma alteração, e acesse com o user postgres e password postgres;

Criado 14 de janeiro de 2013
Ultima resposta 14 de jan. de 2013
Respostas 8
Participantes 3