Bonjour à tous,
J'ai un problème dans la récupération de mes valeurs de ma ComboBox. Je souhaite remplir mon ComboBox grâce à une table SQL dans ma BDD. Je remplis donc ma ComboBox de cette manière :
J'ai eu un premier problème, l'affichage dans ma ComboBox se faisait de cette manière : "eu.hautil.pigeonnier.DaoIdMateriel@328372sq". J'ai régler ce problème en implémentant la méthode toString () grâce à ce forum (et merci d'ailleurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 ObservableList<DaoIdRole> listSection = FXCollections.observableArrayList(); ObservableList<DaoIdMateriel> listMateriel = FXCollections.observableArrayList(); try { Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/le_pigeonnier", "root", "root"); ResultSet resultSection = connection.createStatement().executeQuery("SELECT idSection FROM section"); ResultSet resultMateriel = connection.createStatement().executeQuery("SELECT idMateriel FROM materiel"); while(resultSection.next()){ listSection.add(new DaoIdRole(resultSection.getString("idSection"))); } while(resultMateriel.next()){ listMateriel.add(new DaoIdMateriel(resultMateriel.getString("idMateriel"))); } comboBoxSection.setItems(listSection); comboBoxMateriel.setItems(listMateriel);).
Ensuite j'ai bien réussi à récupérer mes valeurs de ma ComboBox avec les champs de ma table SQL. Cependant, lorsque je valide mes données, j'obtiens cette erreur :
J'ai donc supprimé mes deux clés étrangères dans ma table afin de voir si mon formulaire s'intégrait bien dans la BDD et, en effet, il s'intègre bien dans la BDD. Cependant, les valeurs récupérer sont égale à "0".
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cannot add or update a child row: a foreign key constraint fails (`le_pigeonnier`.`tig`, CONSTRAINT `tig_ibfk_2` FOREIGN KEY (`idMateriel`) REFERENCES `materiel` (`idMateriel`))
Ici on voit bien que, dans la logique, je dois récupérer "4" pour le ComboBox "section" et "7" pour le ComboBox "materiel". Et les valeurs insérer dans ma BDD sont celles-ci :
Je ne comprends pas pourquoi les valeurs récupérées sont ces dernières. Je vous mets mon code ci-dessous :
DBUTILS.java :
EnregistrerTigController.java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public static void enregistrerTig(ActionEvent event, String nomTig, int idSection, int idMateriel) throws SQLException { Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/le_pigeonnier", "root", "root"); PreparedStatement preparedStatement = conn.prepareStatement("INSERT INTO tig(nomTig, idSection, idMateriel) VALUES(?, ?, ?)"); preparedStatement.setString(1, nomTig); preparedStatement.setInt(2, idSection); preparedStatement.setInt(3, idMateriel); int resultInsert = preparedStatement.executeUpdate(); if (resultInsert != 0) { System.out.println("TIG bien ajouté !"); Alert alert = new Alert(Alert.AlertType.INFORMATION); alert.setTitle("Ajout confirmé"); alert.setHeaderText("Confirmation"); alert.setContentText("Le TIG a bien été ajouté."); alert.show(); changeScene(event, "/fxml/menu.fxml", "Menu Gestion | McPigeon", ""); } else { System.out.println("Une erreur est survenue, le TIG n'a pas pu être ajouté"); Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle("Erreur"); alert.setHeaderText("Erreur d'insertion"); alert.setContentText("L'insertion a échouée', veuillez réessayer."); alert.show(); changeScene(event, "/fxml/enregistrer_tig.fxml", "Enregistrer un TIG | McPigeon", ""); } }
DaoIdMateriel.java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 package eu.hautil.pigeonnier.tig; import eu.hautil.pigeonnier.DBUtils; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.ComboBox; import javafx.scene.control.TextField; import java.net.URL; import java.sql.*; import java.util.ResourceBundle; public class EnregistrerTigController implements Initializable { @FXML ComboBox<DaoIdRole> comboBoxSection; @FXML ComboBox<DaoIdMateriel> comboBoxMateriel; @FXML private TextField nomTIG; @FXML private Button submitButton; @FXML private Button backButton; @Override public void initialize(URL url, ResourceBundle resourceBundle) { ObservableList<DaoIdRole> listSection = FXCollections.observableArrayList(); ObservableList<DaoIdMateriel> listMateriel = FXCollections.observableArrayList(); try { Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/le_pigeonnier", "root", "root"); ResultSet resultSection = connection.createStatement().executeQuery("SELECT idSection FROM section"); ResultSet resultMateriel = connection.createStatement().executeQuery("SELECT idMateriel FROM materiel"); while(resultSection.next()){ listSection.add(new DaoIdRole(resultSection.getString("idSection"))); } while(resultMateriel.next()){ listMateriel.add(new DaoIdMateriel(resultMateriel.getString("idMateriel"))); } comboBoxSection.setItems(listSection); comboBoxMateriel.setItems(listMateriel); } catch (SQLException e) { e.printStackTrace(); } boolean isMyComboBoxEmptyIdRole = comboBoxSection.getSelectionModel().isEmpty(); boolean isMyComboBoxEmptyIdMateriel = comboBoxMateriel.getSelectionModel().isEmpty(); submitButton.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { if (isMyComboBoxEmptyIdRole == false || isMyComboBoxEmptyIdMateriel == false || nomTIG.getText().isEmpty()) { System.out.println(comboBoxMateriel + " " + comboBoxSection); Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle("Erreur"); alert.setHeaderText("Champs manquants"); alert.setContentText("Un des champs est vide ou n'est pas rempli, veuillez réessayer."); alert.show(); DBUtils.changeScene(event, "/fxml/tig/enregistrer_tig.fxml", "Enregistrer un TIG | McPigeon", ""); } else if(comboBoxSection.getItems() == null || comboBoxMateriel.getItems() == null){ System.out.println("ComboBox nul"); } else { try { DBUtils.enregistrerTig(event, nomTIG.getText(), DBUtils.stringToInt(comboBoxSection.getItems().toString()), DBUtils.stringToInt(comboBoxMateriel.getItems().toString())); } catch (SQLException e) { e.printStackTrace(); } } } }); backButton.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { DBUtils.changeScene(event, "/fxml/tig/gestion_tig.fxml", "Gestion des TIG | McPigeon", ""); } }); } }
Merci par avance pour vos réponses apportées !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package eu.hautil.pigeonnier.tig; public class DaoIdMateriel { String idMateriel; public DaoIdMateriel(String idMateriel) { this.idMateriel = idMateriel; } public String getIdMateriel() { return idMateriel; } public void setIdMateriel(String idMateriel) { this.idMateriel = idMateriel; } public String toString(){ return idMateriel; } }
Partager