Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Elyton Moreira

Java RESOLVIDO Como pegar o ID do usuário após buscar login JavaFx

Recommended Posts

Estou tentando criando uma função que altere a senha do usuário só que ai tudo bem ele acha o login no banco quando clico em buscar, só que gostaria puxar o id para conseguir mudar a senha de acesso alguém me da uma força ? 

 

// resetsenha controller

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Teladelogin.controller;

import Teladelogin.bean.loginbean;
import Teladelogin.dao.logindao;
import chamartela.GerarTela;
import jBDC.Conexao;
import java.net.URL;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import load.LoadFXML;

/**
 * FXML Controller class
 *
 * @author Elyton
 */
public class ResetSenhaController implements Initializable {

    Connection conn = null;
    PreparedStatement pst = null;
    ResultSet rs = null;

    Stage dialogStage = new Stage();
    Scene scene;

    @FXML
    private TextField user;

    @FXML
    private PasswordField senha;

    @FXML
    private Button salvar;

    @FXML
    private Button buscar;

    @FXML
    private AnchorPane redimensionar;

    @FXML
    private TextField codigo;

    /**
     * Initializes the controller class.
     */
    @Override

    public void initialize(URL url, ResourceBundle rb) {
        this.carregarImage();
        this.buscar.setOnAction(event -> {
            if (buscarLogin()) {
                conn = Conexao.getConnection();
                String sql = "Select * from usuario where login = ? ";
                try {
                    pst = (PreparedStatement) conn.prepareStatement(sql);
                    pst.setString(1, user.getText());

                    rs = pst.executeQuery();
                    if (!rs.next()) {
                        infobox("Login não encontrado, Verifique e tente Novamente ", null, "Erro");
                        this.user.setText("");
                    } else {
                        infobox2("Login Encontrado", null, "Sucesso");
                        Node node = (Node) event.getSource();
                        dialogStage = (Stage) node.getScene().getWindow();

                    }
                } catch (Exception e) {
//            JOptionPane.showMessageDialog(null, e);
                    e.printStackTrace();
                }
            }

        });
        this.salvar.setOnAction(event -> {
            if (validaCampo()) {
                loginbean login = new loginbean();
                logindao logi = new logindao();

                login.setLogin(user.getText());
                login.setSenha(senha.getText());

                try {
                    logi.Alterar(login);
                    infobox2("Usuário e Senha Alterado com Sucesso", null, "Ok");
                    Node node = (Node) event.getSource();
                    dialogStage = (Stage) node.getScene().getWindow();
                    dialogStage.close();

                } catch (Exception ex) {
                    Logger.getLogger(ResetSenhaController.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
    }

    public static URL getFXML() {
        return ResetSenhaController.class.getResource("/Teladelogin/view/ResetSenha.fxml");

    }

    public void infobox(String infoMessage, String headerText, String title) {
        Alert alert = new Alert(Alert.AlertType.ERROR);
        alert.setContentText(infoMessage);
        alert.setTitle(title);
        alert.setHeaderText(headerText);
        Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
        stage.getIcons().add(new Image("/imagem/logo b.png"));

        alert.showAndWait();
    }

    public void infobox2(String infoMessage, String headerText, String title) {
        Alert alert = new Alert(Alert.AlertType.INFORMATION);
        alert.setContentText(infoMessage);
        alert.setTitle(title);
        alert.setHeaderText(headerText);
        Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
        stage.getIcons().add(new Image("/imagem/logo b.png"));

        alert.showAndWait();
    }

    private boolean validaCampo() {
        String erroMessage = "";
        if (user.getText() == null || user.getText().length() == 0) {
            erroMessage += "Login inválido\n";
        }

        if (senha.getText() == null || senha.getText().length() == 0) {
            erroMessage += "Senha inválido\n";
        }

        if (erroMessage.length() == 0) {
            return true;
        } else {
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("Erro ao Alterar de Senha");
            alert.setHeaderText("Campos Vazios, Insira os Dados para Atualizar as Informações ");
            alert.setContentText(erroMessage);
            Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
            stage.getIcons().add(new Image("/imagem/logo b.png"));
            alert.showAndWait();

            return false;
        }

    }

    private boolean buscarLogin() {
        String erroMessage = "";
        if (user.getText() == null || user.getText().length() == 0) {
            erroMessage += "Login inválido\n";
        }
        if (erroMessage.length() == 0) {
            return true;
        } else {
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("Buscar Login ");
            alert.setHeaderText("Campo Vazio, Insira o Login  para Buscar mais  Informações ");
            alert.setContentText(erroMessage);
            Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
            stage.getIcons().add(new Image("/imagem/logo b.png"));
            alert.showAndWait();

            return false;
        }

    }

    private void carregarImage() {
        this.redimensionar.setStyle(
                "-fx-background-image:url(/imagem/login.png);"
                + "-fx-background-repeat:round;"
                + "-fx-background-size:contain;"
                + "-fx-background-position:center center;");
    }

}


// classe DAO lOGIN 


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Teladelogin.dao;

import Teladelogin.bean.loginbean;
import jBDC.Conexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Elyton
 */
public class logindao {

    private Connection con = null;
    private PreparedStatement pst = null;
    private ResultSet rs = null;

    public Object Alterar(Object obj) throws Exception {

        loginbean login = (loginbean) obj;

        String sql = "update usuario set login = ?,senha = ? where codigo = ?";
        try {
            con = Conexao.getConnection();
            pst = con.prepareStatement(sql);

            pst.setString(1, login.getLogin());
            pst.setString(2, login.getSenha());
            pst.setInt(3, login.getCodigo());

            pst.execute();

            return login;

        } catch (SQLException ex) {
            Logger.getLogger(logindao.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            Conexao.fechar(pst);
            Conexao.fechar(con);
        }

        return null;

    }
}

 

Screenshot_95.png

Editado por Elyton Moreira

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse tipo de abordagem é um pouco estranha, já que no fim, a informação que você tem para alterar não é o id, e sim o login ...

Apenas pra entender o motivo, porque você quer que apareça os id do usuário na tela de alteração de senha?? Veja, se isso força alguns processos a mais só pra satisfazer esse caminho.

você precisaria:
- Pesquisar o login no banco para buscar o id do usuário a partir do campo login.
- Setar o id do usuário no campo da tela para ele ser exibido.

- Executar o comando de update no banco com os valores novos.


Se essa necessidade do id não for obrigatória, basta fazer o update com um where apontando apenas o campo login (lembrando que o campo login deve ter constraint de unicidade na tabela)

Compartilhar este post


Link para o post
Compartilhar em outros sites
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Teladelogin.dao;

import Teladelogin.bean.loginbean;
import jBDC.Conexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Elyton
 */
public class logindao {

    private Connection con = null;
    private PreparedStatement pst = null;
    private ResultSet rs = null;

    public Object Alterar(Object obj) throws Exception {

        loginbean login = (loginbean) obj;

        String sql = "update usuario set login = ?,senha = ? where codigo = ?";
        try {
            con = Conexao.getConnection();
            pst = con.prepareStatement(sql);

            pst.setString(1, login.getLogin());
            pst.setString(2, login.getSenha());
            pst.setInt(3, login.getCodigo());

            pst.execute();

            return login;

        } catch (SQLException ex) {
            Logger.getLogger(logindao.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            Conexao.fechar(pst);
            Conexao.fechar(con);
        }

        return null;

    }

    public Object listar() throws Exception {

        String sql = "select * from usuario where codigo = ? ";
        try {
            con = Conexao.getConnection();
            pst = con.prepareStatement(sql);
            rs = pst.executeQuery();
            while (rs.next()) {
                loginbean login = new loginbean();
                login.setCodigo(rs.getInt(1));
                return login;
            }

        } catch (SQLException ex) {
            Logger.getLogger(logindao.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            Conexao.fechar(rs);
            Conexao.fechar(pst);
            Conexao.fechar(con);
        }
        return null;
    }
}

Esse é a minha classe LoginDao

adicionado 2 minutos depois

@psykotico "Apenas pra entender o motivo, porque você quer que apareça os id do usuário na tela de alteração de senha?? Veja, se isso força alguns processos a mais só pra satisfazer esse caminho."

 

Respondendo sua pergunta se eu nao jogar esse id ali no campo ele alterar login de todos, tipo se tiver 5 usuario no banco ele altera o login e senha  dos 5 e fica todos iguais
 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Citação

Respondendo sua pergunta se eu nao jogar esse id ali no campo ele alterar login de todos, tipo se tiver 5 usuario no banco ele altera o login e senha  dos 5 e fica todos iguais

 

Não necessariamente. Veja, se (e exclusivamente se) o campo login for único no banco (ou seja, só vai existir valores diferentes) então qualquer pesquisa por login só vai retornar um campo, correto ... Com isso, na sua pesquisa:

String sql = "Select * from usuario where login = ? ";

Já faz exatamente o que eu quis dizer. Com isso, seu update ficaria com

String sql = "update usuario set senha = ? where login = ?";

Da forma que você está fazendo, dá a chance do usuário mudar inclusive o campo login. Com isso eu posso colocar TODOS os logins da tabela com o mesmo nome, e depois disso, o sistema não conseguirá identificar qual é qual.

Exemplo:

++++++++++++++++++++++++++++++++++++++++
| codigo | login         | senha       |
+--------+---------------+-------------+
| 1      | usuario1      | umasenha    |
| 2      | outrouser     | outrasenha  |
| 3      | maisum        | maisoutra   |
++++++++++++++++++++++++++++++++++++++++

Se eu no primeiro momento fizer login = "outrouser" terei:

Select * from usuario where login = 'outrouser';

o que retornaria o código 2 para a tela. Mas, se depois de atualizar o form eu completar com as informações login = "maisum"  e senha = "blabla", eu tenho:

update usuario set login = 'maisum',senha = 'blabla' where codigo = 2

O que me resulta em uma tabela assim:

++++++++++++++++++++++++++++++++++++++++
| codigo | login         | senha       |
+--------+---------------+-------------+
| 1      | usuario1      | umasenha    |
| 2      | maisum        | blabla      |
| 3      | maisum        | maisoutra   |
++++++++++++++++++++++++++++++++++++++++

E com isso, como seu sistema localizará o usuário "maisum" correto? 

Porém, se você utilizar a constraint unique para o campo login, nunca terá esse problema de duplicação na coluna, e com isso, você já poderá fazer o update da forma que eu expliquei ali em cima.

PS.: Não sei se é o caso, mas por boa prática de segurança, geralmente alteração de senha só é realizada em uma console de admin, ou após o usuário estar logado. Se ele está logado, basta você manter os dados do usuário em um objeto estático (ou um Bean, caso você utilize Injeção de Dependência) e buscar os valores antes do update, só solicitando a senha. Se for numa console admin, como você já listou todos os usuários, você novamente já tem os valores de login na tela de listagem, e pode reaproveitar inclusive o mesmo form para update de senha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o logincontroller ficaria assim ?  

public void initialize(URL url, ResourceBundle rb) {
        this.carregarImage();
        this.buscar.setOnAction(event -> {
            if (buscarLogin()) {
                loginbean login = new loginbean();
                logindao logi = new logindao();
                conn = Conexao.getConnection();
                String sql = "Select * from usuario where login = ? ";
                try {
                    pst = (PreparedStatement) conn.prepareStatement(sql);
                    pst.setString(1, user.getText());

                    rs = pst.executeQuery();
                    if (!rs.next()) {
                        infobox("Login não encontrado, Verifique e tente Novamente ", null, "Erro");
                        this.user.setText("");
                    } else {
                        
                        infobox2("Login Encontrado", null, "Sucesso");
                        //logi.listar();
                        Node node = (Node) event.getSource();
                        dialogStage = (Stage) node.getScene().getWindow();

                    }
                } catch (Exception e) {
//            JOptionPane.showMessageDialog(null, e);
                    e.printStackTrace();
                }
            }

        });
        this.salvar.setOnAction(event -> {
            if (validaCampo()) {
                loginbean login = new loginbean();
                logindao logi = new logindao();

                login.setLogin(user.getText());
                login.setSenha(senha.getText());
                login.setCodigo(Integer.parseInt(codigo.getText()));

                try {
                    logi.Alterar(login.getSenha());
                    infobox2("Usuário e Senha Alterado com Sucesso", null, "Ok");
                    Node node = (Node) event.getSource();
                    dialogStage = (Stage) node.getScene().getWindow();
                    dialogStage.close();

                } catch (Exception ex) {
                    Logger.getLogger(ResetSenhaController.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
    }

//classe dao deixei assim depois que coloquei os select e update que você falou 




/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Teladelogin.dao;

import Teladelogin.bean.loginbean;
import jBDC.Conexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Elyton
 */
public class logindao {

    private Connection con = null;
    private PreparedStatement pst = null;
    private ResultSet rs = null;

    public Object Alterar(Object obj) throws Exception {

        loginbean login = (loginbean) obj;

        String sql = "update usuario set senha = ? where login = ?";
        try {
            con = Conexao.getConnection();
            pst = con.prepareStatement(sql);

            
            pst.setString(1, login.getSenha());
            pst.setString(2, login.getLogin());

            pst.execute();

            return login;

        } catch (SQLException ex) {
            Logger.getLogger(logindao.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            Conexao.fechar(pst);
            Conexao.fechar(con);
        }

        return null;

    }

    public Object listar() throws Exception {

        String sql = "Select * from usuario where login = ? ";
        try {
            con = Conexao.getConnection();
            pst = con.prepareStatement(sql);
            rs = pst.executeQuery();
            while (rs.next()) {
                loginbean login = new loginbean();
                login.setLogin(rs.getString(1));
                return login;
            }

        } catch (SQLException ex) {
            Logger.getLogger(logindao.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            Conexao.fechar(rs);
            Conexao.fechar(pst);
            Conexao.fechar(con);
        }
        return null;
    }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso exato ... assim você não precisa ficar buscando o código antes de fazer o update e faz tudo num processo apenas ... outra coisa interessante é validar pra ver se ele preencheu o campo senha ... só fazer um
 

!senha.isEmpty()

assim ele evita salvar logins com senha vazia ;) .... 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

esse !senha.isEmpty() coloca aonde ? 

 

sobre validação eu já fiz um método que valida se campo está vazio ou nao utilizei o infobox

 

 

adicionado 18 minutos depois

Agora ele deu uns seguintes erros  de exception 

Executing C:\Users\Elyton\Documents\Projeto igreja\Projeto_Cadastramento_Depart\dist\run1679245453\Projeto_Cadastramento_Depart.jar using platform C:\Program Files\Java\jdk1.8.0_111\jre/bin/java
abr 06, 2018 1:28:08 AM Teladelogin.controller.ResetSenhaController lambda$initialize$1
GRAVE: null
java.lang.ClassCastException: java.lang.String cannot be cast to Teladelogin.bean.loginbean
	at Teladelogin.dao.logindao.Alterar(logindao.java:29)
	at Teladelogin.controller.ResetSenhaController.lambda$initialize$1(ResetSenhaController.java:111)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
	at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
	at javafx.event.Event.fireEvent(Event.java:198)
	at javafx.scene.Node.fireEvent(Node.java:8413)
	at javafx.scene.control.Button.fire(Button.java:185)
	at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
	at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
	at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
	at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
	at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
	at javafx.event.Event.fireEvent(Event.java:198)
	at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
	at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
	at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
	at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:380)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:294)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:416)
	at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:415)
	at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
	at com.sun.glass.ui.View.notifyMouse(View.java:937)
	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
	at java.lang.Thread.run(Thread.java:745)

 

 

Eu cliquei pra saber onde tava dando erro pra saber qual linha tava o problema ele me levou pra classe logindao e ResetSenhaController olha o print 

 

Screenshot_102.png

Screenshot_103.png

Editado por Elyton Moreira

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

É que você tá chamando o método com o seguinte parâmetro:

logindao logi = new logindao();
//...
logi.Alterar(login.getSenha());

ou seja, você tá passando uma String Senha, para um método e lá você está aguardando que o Objeto seja um LoginBean
acredito que deva funcionar se você alterar a chamada do método para:

logi.Alterar(login);

 

Editado por psykotico

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Funcionou valeu mano pela ajuda hehee !!!

 

Vou deixar a solução completa código fonte caso alguém queira futuramente... 

 

// class ResetSenhaController

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Teladelogin.controller;

import Teladelogin.bean.loginbean;
import Teladelogin.dao.logindao;
import chamartela.GerarTela;
import jBDC.Conexao;
import java.net.URL;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import load.LoadFXML;

/**
 * FXML Controller class
 *
 * @author Elyton
 */
public class ResetSenhaController implements Initializable {

    Connection conn = null;
    PreparedStatement pst = null;
    ResultSet rs = null;

    Stage dialogStage = new Stage();
    Scene scene;

    @FXML
    private TextField user;

    @FXML
    private PasswordField senha;

    @FXML
    private Button salvar;

    @FXML
    private Button buscar;

    @FXML
    private AnchorPane redimensionar;


    /**
     * Initializes the controller class.
     */
    @Override

    public void initialize(URL url, ResourceBundle rb) {
        this.carregarImage();

//no buscar ele vai verificar na tabela do banco se existe o tal login e sim você vai e altera a senha 

        this.buscar.setOnAction(event -> {
            if (buscarLogin()) {
                loginbean login = new loginbean();
                logindao logi = new logindao();
                conn = Conexao.getConnection();
                String sql = "Select * from usuario where login = ? ";
                try {
                    pst = (PreparedStatement) conn.prepareStatement(sql);
                    pst.setString(1, user.getText());

                    rs = pst.executeQuery();
                    if (!rs.next()) {
                        infobox("Login não encontrado, Verifique e tente Novamente ", null, "Erro");
                        this.user.setText("");
                    } else {
                        
                        infobox2("Login Encontrado", null, "Sucesso");
                      
                        Node node = (Node) event.getSource();
                        dialogStage = (Stage) node.getScene().getWindow();

                    }
                } catch (Exception e) {
//            JOptionPane.showMessageDialog(null, e);
                    e.printStackTrace();
                }
            }

        });
		
//Ação do botao salvar

        this.salvar.setOnAction(event -> {
            if (validaCampo()) {
                loginbean login = new loginbean();
                logindao logi = new logindao();

                login.setLogin(user.getText());
                login.setSenha(senha.getText());


                try {
                    logi.Alterar(login); //chama o metodo alterar na classe Logindao
                    infobox2("Senha Alterada com Sucesso", null, "Ok");
                    Node node = (Node) event.getSource();
                    dialogStage = (Stage) node.getScene().getWindow();
                    dialogStage.close();

                } catch (Exception ex) {
                    Logger.getLogger(ResetSenhaController.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
    }

    public static URL getFXML() {
        return ResetSenhaController.class.getResource("/Teladelogin/view/ResetSenha.fxml");

    }

	
// metodo infobox pra aparecer a janela personalizada 

    public void infobox(String infoMessage, String headerText, String title) {
        Alert alert = new Alert(Alert.AlertType.ERROR);
        alert.setContentText(infoMessage);
        alert.setTitle(title);
        alert.setHeaderText(headerText);
        Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
        stage.getIcons().add(new Image("/imagem/logo b.png"));//adicionar uma imagem no lugar daquele icone do java quando abre o frame

        alert.showAndWait();
    }

// metodo infobox pra aparecer a janela personalizada 

    public void infobox2(String infoMessage, String headerText, String title) {
        Alert alert = new Alert(Alert.AlertType.INFORMATION);
        alert.setContentText(infoMessage);
        alert.setTitle(title);
        alert.setHeaderText(headerText);
        Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
        stage.getIcons().add(new Image("/imagem/logo b.png")); //adicionar uma imagem no lugar daquele icone do java quando abre o frame

        alert.showAndWait();
    }

// metodo validar os campo login e senha  caso clique no botao salvar e os tiver vazio os campos  login e senha  ele vai aparecer mensagem de erro  "preencha os campos bla bla "

    private boolean validaCampo() {
        String erroMessage = "";
        if (user.getText() == null || user.getText().length() == 0) { //varivel user que defini o nome  para textfield login 
            erroMessage += "Login inválido\n";
        }

        if (senha.getText() == null || senha.getText().length() == 0) { //varivel senha que defini o nome  para PasswordField senha 
            erroMessage += "Senha inválido\n";
        }

        if (erroMessage.length() == 0) {
            return true;
        } else {
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("Erro ao Alterar de Senha");
            alert.setHeaderText("Campos Vazios, Insira os Dados para Atualizar as Informações ");
            alert.setContentText(erroMessage);
            Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
            stage.getIcons().add(new Image("/imagem/logo b.png"));  
            alert.showAndWait();

            return false;
        }

    }
	
// metodo validar os campo buscar caso clique no botao buscar e nao tiver o campo login preenchido ele vai aparecer mensagem de erro 

    private boolean buscarLogin() {  
        String erroMessage = "";
        if (user.getText() == null || user.getText().length() == 0) { //varivel user que defini o nome  para textfield login 
            erroMessage += "Login inválido\n";
        }
        if (erroMessage.length() == 0) {
            return true;
        } else {
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("Buscar Login ");
            alert.setHeaderText("Campo Vazio, Insira o Login  para Buscar mais  Informações ");
            alert.setContentText(erroMessage);
            Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
            stage.getIcons().add(new Image("/imagem/logo b.png"));
            alert.showAndWait();

            return false;
        }

    }

   

}


//class LoginDao 


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Teladelogin.dao;

import Teladelogin.bean.loginbean;
import jBDC.Conexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Elyton
 */
public class logindao {

    private Connection con = null;
    private PreparedStatement pst = null;
    private ResultSet rs = null;

//update para alterar a senha 
    public Object Alterar(Object obj) throws Exception {

        loginbean login = (loginbean) obj;

        String sql = "update usuario set senha = ? where login = ?"; 
        try {
            con = Conexao.getConnection();
            pst = con.prepareStatement(sql);

            
            pst.setString(1, login.getSenha());
            pst.setString(2, login.getLogin());

            pst.execute();

            return login;

        } catch (SQLException ex) {
            Logger.getLogger(logindao.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            Conexao.fechar(pst);
            Conexao.fechar(con);
        }

        return null;

    }

    public Object listar() throws Exception {

        String sql = "Select * from usuario where login = ? "; //vai na tabela usuario no banco de dados e verifica se existe o login na qual o ususario procura para alterar a senha 
        try {
            con = Conexao.getConnection();
            pst = con.prepareStatement(sql);
            rs = pst.executeQuery();
            while (rs.next()) {
                loginbean login = new loginbean();
                login.setLogin(rs.getString(1));
                return login;
            }

        } catch (SQLException ex) {
            Logger.getLogger(logindao.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            Conexao.fechar(rs);
            Conexao.fechar(pst);
            Conexao.fechar(con);
        }
        return null;
    }
}

 

Editado por Elyton Moreira
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×