2 pièce(s) jointe(s)
Récupération d'une valeur ComboBox
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 :
Code:
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); |
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 ;)).
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 :
Code:
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`))
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".
Pièce jointe 613631
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 :
Pièce jointe 613632
Je ne comprends pas pourquoi les valeurs récupérées sont ces dernières. Je vous mets mon code ci-dessous :
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
| 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", "");
}
} |
EnregistrerTigController.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
| 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", "");
}
});
}
} |
DaoIdMateriel.java :
Code:
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;
}
} |
Merci par avance pour vos réponses apportées !!