Sou novo aqui no fórum e estou com um problema… Estou desenvolvendo um sistema de controle de RH que possui uma tela de login e senha antes de abrir o sistema.
Eu possuo uma classe que defina a tela e outra classe que conecta no banco e faz autenticação do usuário no sistema, se os dados estiverem corretos a tela principal do sistema é instanciada.
Porém toda vez que digito Login e senha e mando compilar o Eclipse entra em Debug, segue abaixo o código da classe de autenticação:
Desde já agradeço…
[code]public class AutenticarSist extends Login{
/**
*
*/
private static final long serialVersionUID = 1L;
protected static Statement MeuState = null;
Ele entra em debug mas diz que tem alguma coisa de errado com o fonte? se sim, qual o erro? e qual a linha?
Se não tente compilar com outra IDE, ou até mesmo no dos (javac), para ver se você não marcou algum ponto (BreakPoint) sem querer.
Não diz que tem nada de errada com o Fonte, mas quando compila da o seguinte erro após o Debug:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at sist_rh.AutenticarSist.autenticar(AutenticarSist.java:41)
at sist_rh.Login$1.actionPerformed(Login.java:77)
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.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)
Você deve estar tentando usar um método de algum objeto nao inicializado.
Poste a linha 41 do método abaixo:
at sist_rh.[b]AutenticarSist.autenticar/b
Ou
Se nao estou pensando besteira, certa vez aconteceu algo parecido comigo, quando fui fazer a conexão com o banco de dados. Corrigi o problema ajustando o path do Java no meu pc, ou jogando os arquivos para dentro do “bin” da onde se localiza o java.
if(login.equals(rs.getString(login)) || senha.equals(rs.getString(senha))){
TelaPrincipal tela = new TelaPrincipal();
tela.setVisible(true);
esse comando deveria estar asim
if(login.equals(rs.getString([color=orange]“login”[/color])) || senha.equals(rs.getString([color=orange]“senha”[/color]))){
TelaPrincipal tela = new TelaPrincipal();
tela.setVisible(true);
Precisa das aspas, porque vc quer verificar o resultado de campos do seu select, então vc tem que identificar a coluna da comparação no caso login
A linha 41 no seu primeiro post é tela.setVisible(true). Verifique se o seu container na classe TelaPrincipal está instanciado e se o mesmo adiciona todos os componentes que você precisa.
oi,
vc esta usando Statement?
se tiver muda para PreperedStatement (eh mais facil de trabalhar), e aproposito muda o select
dai o codigo ficaria assim
PreperedStatement = Connection.preparedStatement(“Select count(idTabela) as qtd from tabela where campo1 = ? and campo2 = ?”);
PreperedStatement.setString(1,variavel1);
PreperedStatement.setString(2,variavel2);
Resultset = PreperedStatement.executeQuery();
ResultSet.next();
if(ResultSet.getInt(“qtd”) == 1)
…
/* se n funcionar desse modo
int a = Integer.parseInt(ResultSet.getString(“qtd”));
Vou fazer o seguinte… Vou verificar com alguem da minha sala na facu que conseguiu fazer essa joça rodar e posto aqui a solução. Pq infelizmente nenhuma das tentativas deu certo…
O erro ocorria pois a variável “MeuState” não estava declarada como Global, ou seja, como no código tinha 2 métodos a variável ficava valida somente para um deles.
Para resolver isso declarei a variável “private static Statement MeuState;” e coloquei a conexão e a query no mesmo metodo.