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:
Meu código de controle do FXML:
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)