Fórum Como fazer uma entrada autenticada (login + senha) em Java + PostgreSQL #576337
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 :)