Metodo do Dao não funciona na tela Login

12 respostas Resolvido
java
T

gente se possível queria muito a ajuda de vocês.
meu problema é o seguinte.
to fazendo uma tela de login que será permitido clientes e administradores.

dai eu necessito que tenha uma interface para implementar ambos usuários.
mais ai que vem meu problema, eu comecei a fazer apenas para o administrador pois queria ver se funcionava.

mas se eu fizer com a interface e colocando os métodos dessa interface na minha classe administradorDao ela gera um erro.

mas quando eu faço toda a lógica na minha tela de login, ela funciona.
mas ai entra o detalhe o código fica totalmente poluído e feio para manutenção, queria saber como posso ajeitar isso.

vou deixa o arquivo da minha tala aqui.

e no método abaixo esta a implementação que eu fiz.

btnEntrarUsuario.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { } }

Login.java (6.5 KB)

12 Respostas

C

Boa tarde,

Você pode criar uma tabela de USUARIOS ao invés de ADMINISTRADORES.
Nessa tabela de USUARIOS coloque um campo chamado perfil.

depois disso, faça as validaçães necessárias no java.

T

Mas ainda não é isso que você disse.
Deixa eu ver se me expresso melhor.
Já tá tudo certo no banco de dados as validações também está certas no Java.
Mas…

Essas validações só funciona no método do botão entrar. Mas não quero que fique o try catch a chamada ao banco de dados tudo no botão.

Dai fiz um Dao que vai ter um método que chama outra interface gráfica. E coloquei no método toda a implementação que está lá no botão. Mais aí que vem o problema pois quando chamo esse método da classe Dao no meu botão ele não roda e gera um erro.

C

Qual o erro gerado?

T

a saida do error é esta.

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at br.com.lojaanandabiloia.view.Login$2.actionPerformed(Login.java:109)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$500(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue$4.run(Unknown Source)

at java.awt.EventQueue$4.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)
T

os metodos que tenho sao esses
na DAO

public void abrirTelaPrincipal(String tflogin, String tfpassword){

PreparedStatement pstm;

ResultSet rs;

String consulta = select * from administrador;
try(Connection conexao = new ConnectionFactory().getConnection()){
        pstm = conexao.prepareStatement(consulta);
        rs = pstm.executeQuery();
        if(rs.next()){
            String bdnome = rs.getString("admin_login");
            String bdsenha = rs.getString("admin_senha");
            if(bdnome.equals(tflogin) && bdsenha.equals(tfpassword)){
                this.chamarProximaTela();
            }else{        
                this.chamarMensagemErro();
            }
                    }
    }catch (SQLException e) {
        System.out.println("ERROR - ao abrir tela principal");
        e.printStackTrace();
        // TODO: handle exception
    }
}

private void chamarProximaTela(){
    JOptionPane.showMessageDialog(null, "Bem vindo ao Sistema.","Bem Vindo", JOptionPane.INFORMATION_MESSAGE);
    new Principal().show();
    new Login().dispose();
}

private void chamarMensagemErro(){
    JOptionPane.showMessageDialog(null, "Nome ou senha do usuário esta incorreta","ERROR",JOptionPane.ERROR_MESSAGE );
    
}

e na interface grafia no botao tenho a chamada do metodo

btnEntrarUsuario.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

//metodo para funcionar o botao entrar

<a href="//administradorDao.abrirTelaPrincipal">//administradorDao.abrirTelaPrincipal</a>(tfNomeDoUsuario.getText(), tfSenhaDoUsuario.getText(), lblMenssagemError);

administradorDao.abrirTelaPrincipal(tfNomeDoUsuario.getText(), tfSenhaDoUsuario.getText());

}

});
C
Solucao aceita

administradorDao esta null. tente instanciar

T

isso mesmo.
fui ver isso depois que instanciei deu certo.

valeu.

E

Tem uma serie de problemas em sua modelagem procure utiliza o modelo MVC (Model - View - Controller).

Tentei ajeitar o seu código veja :

public void actionPerformed(ActionEvent arg0) {
		boolean isLogado = 
			new AdministradorDao().procura(tfNomeDoUsuario.getText(),
					tfSenhaDoUsuario.getText());
				
			if(isLogado){
				Principal telaPrincipal = new Principal();
				Login telaLogin = new Login();
				
				telaPrincipal.setVisible(true);
				telaLogin.dispose();
			}else{
				lblMenssagemError.setText("Nome ou Senha do usuário está incorretos.");					
			}				
		}
		});

E na classe AdministradorDao :

public class AdministradorDao {

	public boolean procura(String nome,String senha) {
		
		PreparedStatement pstm;
		ResultSet rs;
		String consulta = "select * from administrador where administrador.admin_login = ? and administrador.admin_senha = ?";
		
		try(Connection conexao = new ConnectionFactory().getConnection()){
			pstm = conexao.prepareStatement(consulta);
			pstm.setString(1, nome);
			pstm.setString(2, senha);
			rs = pstm.executeQuery();
			return rs.next();
		}catch (SQLException e) {
			System.out.println("ERROR - ao abrir tela principal");
			e.printStackTrace();
		}
		return false;
	}
}

Não sei se a instrução sql estar correta.

Abraço

T

valeu tambem amig. primeiro to estudando pra depois coloca os padroes mvc essas coisas.
mas primeiro quero entender a logica

E

E nada mais do que dividir as responsabilidades na classe certa, depois que você ver como funciona, vai perceber que estar perdendo tempo, você analisou o código acima ? Mas faça o que acha que é o melhor.

T

poise analisei o codigo sim.
e porque comprei uns livros de java
e comecei pelo OO
agora estava lendo de API
agora vou pro java8
depois design pattern ou mvc

ai to pegando aos poucos.
quero aprender a fazer o que eu modelei
e ta dando certo to com alguns erros ainda mas lendo um pouco mais vou melhorando

E

Ta certo, agora é continuar no aprendizado , Abraço e até mais

Criado 16 de fevereiro de 2016
Ultima resposta 16 de fev. de 2016
Respostas 12
Participantes 3