1 pièce(s) jointe(s)
Récupération valeurs dans une BDD JavaFX.
Bonjour,
Pour un projet dans le cadre de mon BTS, je suis en train de réaliser une application en JavaFX qui a pour menu un formulaire login/mdp et qui, si les identifiants correspondent aux champs dans la BDD, amène l'utilisateur vers une page de bienvenue.
Pour tester, j'ai créer une BDD "test" avec une table user(id, username, password). J'y est enregistré un utilisateur avec comme user/mdp "root".
Cependant, lorsque j'essaye de me connecter, il me dit qu'il ne trouve pas l'utilisateur et le mot de passe et me retourne l'erreur que j'ai enregistré dans mon code "Utilisateur non trouvé dans la base de données.". (ligne 93 dans DBUtils.java)
Je vous mets la page d'accueil en photo pour que mon explication vous soit plus claire :
Pièce jointe 611261
Voici mon code
- DBUtils.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
| package eu.hautil.pigeonnier;
import javafx.event.ActionEvent;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.stage.Stage;
import java.sql.*;
import java.io.IOException;
public class DBUtils {
public static void changeScene(ActionEvent event, String fxmlFile, String title, String username) {
Parent root = null;
if (username != null) {
try {
FXMLLoader loader = new FXMLLoader(DBUtils.class.getResource(fxmlFile));
root = loader.load();
LoggedInController loggedInController = loader.getController();
loggedInController.setUserInformation(username);
} catch (IOException e) {
e.printStackTrace();
}
} else {
try {
root = FXMLLoader.load(DBUtils.class.getResource(fxmlFile));
} catch (IOException e) {
e.printStackTrace();
}
}
Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
stage.setTitle(title);
stage.setScene(new Scene(root, 600, 400));
stage.show();
}
public static void signUpuser(ActionEvent event, String username, String password) {
Connection connection = null;
PreparedStatement psInsert = null;
PreparedStatement psCheckUserExists = null;
ResultSet resultSet = null;
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
psCheckUserExists = connection.prepareStatement("SELECT * FROM user WHERE username = ?");
psCheckUserExists.setString(1, username);
resultSet = psCheckUserExists.executeQuery();
changeScene(event, "fxml/logged-in.fxml", "Welcome !", username);
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (resultSet != null)
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (psCheckUserExists != null) {
try {
psCheckUserExists.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public static void logInuser(ActionEvent event, String username, String password) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
preparedStatement = connection.prepareStatement("SELECT password FROM user WHERE username = ?");
preparedStatement.setString(1, username);
resultSet = preparedStatement.executeQuery();
if (resultSet.isBeforeFirst()) {
System.out.println("Utilisateur non trouvé dans la base de données.");
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setContentText("Les informations fournies sont incorrectes");
alert.show();
} else {
while (resultSet.next()) {
String retrievePassword = resultSet.getString("password");
if (retrievePassword.equals(password)) {
changeScene(event, "fxml/logged-in.fxml", "Welcome !", username);
} else {
System.out.println("Le mot de passe ne correspond pas !");
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setContentText("Les informations fournies sont incorrectes");
alert.show();
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(preparedStatement != null){
try{
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection != null){
try{
connection.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
} |
- Controller.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| package eu.hautil.pigeonnier;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import java.net.URL;
import java.util.ResourceBundle;
public class Controller implements Initializable {
@FXML
private Button button_login;
@FXML
private TextField tf_username;
@FXML
private TextField tf_password;
@Override
public void initialize(URL url, ResourceBundle resources) {
button_login.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
DBUtils.logInuser(event, tf_username.getText(), tf_password.getText());
}
});
}
} |
- Main.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| package eu.hautil.pigeonnier;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.io.File;
import java.io.IOException;
import java.net.URL;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
URL url = new File("src/main/resources/fxml/sample.fxml").toURI().toURL();
Parent root = FXMLLoader.load(url);
primaryStage.setTitle("Connexion");
primaryStage.setScene(new Scene(root, 600, 500));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
} |
- Et voici l'erreur qu'il m'affiche lorsque je clique sur le bouton "Se connecter" :
Code:
Utilisateur non trouvé dans la base de données.
UPDATE :
J'ai rajouté une ligne de code avant
Code:
System.out.println("Utilisateur non trouvé dans la base de données.");
qui est
Code:
System.out.print(username + " " + password);
afin de voir si les bonnes valeurs étaient récupérées. En effet, dans la console, on m'affiche bien "root" et "root", donc je ne comprends pas pourquoi il me dit qu'il ne trouve pas les informations dans la base.