Como fazer uma entrada autenticada (login + senha) em Java + PostgreSQL

25/02/2017

0

Boa dia/tarde/noite. Meu professor me pediu para fazer uma coisa útil com o CRUD no Java + PostgreSQL e então fiz um cadastro de usuário e manutenção disso. Só que agora que o trabalho passou, quero fazer uma coisa mais completa, no caso, uma tela de Login e Senha e se o login não estiver no BdD, ele possa fazer um cadastro, só que eu não sei (sou meio noob, kkk) como verificar se um dado está no BdD e pegar apenas os dados em que aquele específico dado (login) está. Código da conexão com o BdD:
package login;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;

public class CadastroBD {
    Connection conexao;
    private void conectar(){
        try{
        //conectar ao banco de dados
            Class.forName("org.postgresql.Driver");
            String url = "jdbc:postgresql://localhost:5432/login";
            String login1 = "postgres";
            String senha = "ls@333000";
            conexao = DriverManager.getConnection(url, login1, senha);
        }catch(Exception erro){
            Alert aviso = new Alert(AlertType.ERROR);
            aviso.setTitle("Login");
            aviso.setHeaderText("Problema ao conectar o banco de dados.");
            aviso.setContentText(erro.toString());
            aviso.showAndWait();
        }
    }
    //Create
    public int inserir(String nome, String sobrenome, String login, String email, String senha){
        try{
            conectar();
            String sql = "insert into usuario(nome, sobrenome, login, email, senha) values(?,?,?,?,?)";
            PreparedStatement agente = conexao.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
            agente.setString(1, nome);
            agente.setString(2, sobrenome);
            agente.setString(3, login);
            agente.setString(4, email);
            agente.setString(5, senha);
            agente.executeUpdate();
            ResultSet retorno = agente.getGeneratedKeys();
            int id = 0;
            if (retorno.next())  id = retorno.getInt(1); //retorna chave gerada (id)
            agente.close();
            conexao.close();
            return id;
        }catch(Exception erro){
            Alert aviso = new Alert(AlertType.ERROR);
            aviso.setTitle("Login");
            aviso.setHeaderText("Problema ao enviar dados ao banco de dados.");
            aviso.setContentText(erro.toString());
            aviso.showAndWait();
        }
     return 0;
    }
    //Retrieve
    public ObservableList<Usuario> listar(){
        return query("select * from usuario;");
    }
    public ObservableList<Usuario> buscar(String nome){
        return query("select * from usuario where nome like '%"+nome+"%';");
    }
    private ObservableList<Usuario> query(String sql){
        try{
            conectar();
            ObservableList<Usuario> dados = FXCollections.observableArrayList();
            Statement agente = conexao.createStatement();
            ResultSet retorno = agente.executeQuery(sql);
            
            while (retorno.next()){
                dados.add(new Usuario(
                    retorno.getInt(1),
                    retorno.getString(2),
                    retorno.getString(3),
                    retorno.getString(4),
                    retorno.getString(5),
                    retorno.getString(6))
                );
            }
            agente.close();
            conexao.close();
            return dados;
        }catch(Exception erro){
            Alert aviso = new Alert(AlertType.ERROR);
            aviso.setTitle("Login");
            aviso.setHeaderText("???");
            aviso.setContentText(erro.toString());
            aviso.showAndWait();
            return null;
        }
    }
    //Update/Delete
    public int deletar(int id){
        return update("delete from usuario where id ="+id+";");
    }
    public int atualizar (int id, String nome, String sobrenome, String login, String email, String senha){
        return update("UPDATE usuario SET nome='"+nome+"', sobrenome='"+sobrenome+"',login='"+login+"',email='"+email+"', senha='"+senha+"' WHERE id ="+id+";");
    }
    private int update(String sql){
        try{
            conectar();
            Statement agente = conexao.createStatement();
            int result = agente.executeUpdate(sql);
            agente.close();
            conexao.close();
            return result;    
        }catch(Exception erro){
            Alert aviso = new Alert(AlertType.ERROR);
            aviso.setTitle("Login");
            aviso.setHeaderText("???");
            aviso.setContentText(erro.toString());
            aviso.showAndWait();
            return 0;
        }

    }

}

Meu código de controle do FXML:
package login;

import java.net.URL;
import java.util.List;
import java.util.ResourceBundle;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Alert;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;

public class BdDController implements Initializable {
    CadastroBD usuario;
    Usuario itemSelecionado;
//TAB CREATE    
    @FXML private TextField tfNome;
    @FXML private TextField tfSobrenome;
    @FXML private TextField tfLogin;
    @FXML private TextField tfEmail;
    @FXML private TextField tfSenha;
//TAB UPDATE/DELETE   
    @FXML private TextField ID;
    @FXML private TextField NOME;
    @FXML private TextField SOBRENOME;
    @FXML private TextField LOGIN;
    @FXML private TextField EMAIL;
    @FXML private TextField SENHA;
//TAB RETRIEVE    
    @FXML private TableView<Usuario> tabela;
    @FXML private TableColumn clId;
    @FXML private TableColumn clNome;
    @FXML private TableColumn clSobrenome;
    @FXML private TableColumn clLogin;
    @FXML private TableColumn clEmail;
    @FXML private TableColumn clSenha;
    @FXML private TextField tfBuscar;
    
    ObservableList<Usuario> OLcliente;  
    
    
    public BdDController() { //inicializador
        this.usuario = new CadastroBD();
    }
    @FXML
    private void inserir(ActionEvent event) {
        Alert aviso = new Alert(Alert.AlertType.INFORMATION);
        if (!tfNome.getText().isEmpty()){
            int id = usuario.inserir(tfNome.getText(), tfSobrenome.getText(), tfLogin.getText(), tfEmail.getText(), tfSenha.getText());
            aviso.setTitle("LOGIN");
            aviso.setHeaderText("Ação efetuada com sucesso!");
            aviso.setContentText(tfNome.getText()+" inserido com o ID "+id+".");
            aviso.showAndWait();
            tfNome.clear();
            tfSobrenome.clear();
            tfLogin.clear();
            tfEmail.clear();
            tfSenha.clear();
        }else{
            aviso.setTitle("Login");
            aviso.setHeaderText(null);
            aviso.setContentText("Vazio!");
            aviso.showAndWait();
        }
    }
    @FXML 
    private void buscar(ActionEvent event){
        tabela.setItems(usuario.buscar(tfBuscar.getText()));
    }
    @FXML
    private void listar(){
        tabela.setItems(usuario.listar());
    }
    @FXML 
    private void editar(ActionEvent event){
        tabela.getSelectionModel().clearSelection();
        usuario.atualizar(
                Integer.parseInt(ID.getText()),
                NOME.getText(),
                SOBRENOME.getText(),
                LOGIN.getText(),
                EMAIL.getText(),
                SENHA.getText()
        );
        listar();
    }
    @FXML 
    private void apagar(ActionEvent event){
        tabela.
Lucas Soares

Lucas Soares

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar