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) { } }
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
tucupi
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.
try(Connectionconexao=newConnectionFactory().getConnection()){pstm=conexao.prepareStatement(consulta);rs=pstm.executeQuery();if(rs.next()){Stringbdnome=rs.getString("admin_login");Stringbdsenha=rs.getString("admin_senha");if(bdnome.equals(tflogin)&&bdsenha.equals(tfpassword)){this.chamarProximaTela();}else{this.chamarMensagemErro();}}}catch(SQLExceptione){System.out.println("ERROR - ao abrir tela principal");e.printStackTrace();// TODO: handle exception}}privatevoidchamarProximaTela(){JOptionPane.showMessageDialog(null,"Bem vindo ao Sistema.","Bem Vindo",JOptionPane.INFORMATION_MESSAGE);newPrincipal().show();newLogin().dispose();}privatevoidchamarMensagemErro(){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(newActionListener(){publicvoidactionPerformed(ActionEventarg0){//metodo para funcionar o botao entrar<ahref="//administradorDao.abrirTelaPrincipal">//administradorDao.abrirTelaPrincipal</a>(tfNomeDoUsuario.getText(), tfSenhaDoUsuario.getText(), lblMenssagemError);administradorDao.abrirTelaPrincipal(tfNomeDoUsuario.getText(),tfSenhaDoUsuario.getText());}});
C
Solucao aceita
campelo.m
administradorDao esta null. tente instanciar
T
tucupi
isso mesmo.
fui ver isso depois que instanciei deu certo.
valeu.
E
Eduardo_Maranata10
Tem uma serie de problemas em sua modelagem procure utiliza o modelo MVC (Model - View - Controller).
Tentei ajeitar o seu código veja :
publicvoidactionPerformed(ActionEventarg0){booleanisLogado=newAdministradorDao().procura(tfNomeDoUsuario.getText(),tfSenhaDoUsuario.getText());if(isLogado){PrincipaltelaPrincipal=newPrincipal();LogintelaLogin=newLogin();telaPrincipal.setVisible(true);telaLogin.dispose();}else{lblMenssagemError.setText("Nome ou Senha do usuário está incorretos.");}}});
E na classe AdministradorDao :
publicclassAdministradorDao{publicbooleanprocura(Stringnome,Stringsenha){PreparedStatementpstm;ResultSetrs;Stringconsulta="select * from administrador where administrador.admin_login = ? and administrador.admin_senha = ?";try(Connectionconexao=newConnectionFactory().getConnection()){pstm=conexao.prepareStatement(consulta);pstm.setString(1,nome);pstm.setString(2,senha);rs=pstm.executeQuery();returnrs.next();}catch(SQLExceptione){System.out.println("ERROR - ao abrir tela principal");e.printStackTrace();}returnfalse;}}
Não sei se a instrução sql estar correta.
Abraço
T
tucupi
valeu tambem amig. primeiro to estudando pra depois coloca os padroes mvc essas coisas.
mas primeiro quero entender a logica
E
Eduardo_Maranata10
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
tucupi1 like
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
Eduardo_Maranata10
Ta certo, agora é continuar no aprendizado , Abraço e até mais