Ir ao conteúdo
  • Cadastre-se
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

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

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

É 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);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;
    }
}

 

  • 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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×