Bonjour,
Après multiples recherches et essais, je suis perdu...
Je n'arrive pas à reprendre la valeur du Texfield pour l'ajouter dans ma DB SQL.
Erreur :com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: FUNCTION numero.getInt does not exist
Mon erreur devrait se trouver ici :
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 //-------------------------------Ajouter-----------------------// ////////TEST//////// @FXML private void AjouterDB(ActionEvent event) { try { Connection connexion = Connexiondb.Connect(); //Excecute la requete et envoie dans ResultSet String RequeteAjout = "INSERT INTO `joueurs`(`JoueurID`,`Numero`, `Prenom`, `Nom`, `Poste`, `Date_de_naissance`, `Nationalite`, `ClubID`) VALUES (NULL,numero.getInt(4),NULL,NULL, NULL,NULL,NULL ,'1')"; /*TFPrenom.getText(), TFNom.getText(), TFPoste.getText(), TFDate_de_naissance.getText() , TFNationalite.getText()*/ PreparedStatement PreparedStmt = connexion.prepareStatement(RequeteAjout); PreparedStmt.executeUpdate(RequeteAjout); //TEST DEBUG/// System.out.println("Obtention des éléments : ok"); } catch (SQLException e) { System.out.println("Ajout impossible à effectuer.\nErreur :" + e); } }
Code : PanelCtrl.java
Code : Panel.FXML
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
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157 package AfficherListeDB.Controleur; import AfficherListeDB.ConnexionDB; import AfficherListeDB.Joueurs; import com.sun.javafx.scene.layout.region.Margins; import com.sun.xml.internal.ws.commons.xmlutil.Converter; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.control.Button; import javax.print.attribute.DateTimeSyntax; import javax.swing.*; import java.net.URL; import java.sql.*; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.*; import java.util.logging.SimpleFormatter; public class PanelCtrl implements Initializable { //Declaration des Variables du Tableau @FXML private TableView<Joueurs> Tableau; @FXML private TableColumn<Joueurs, String> Nom; @FXML private TableColumn<Joueurs, String> Prenom; @FXML private TableColumn<Joueurs, String> Poste; @FXML private TableColumn<Joueurs, Integer> numero; @FXML private TableColumn<Joueurs, String> Date_de_naissance; @FXML private TableColumn<Joueurs, String> Nationalite; @FXML private Button BAffiche; private Connection connection = null; private Statement PreparedStmt = null; private ResultSet RequeteAjout = null; private ObservableList<Joueurs> JoueursList; private ConnexionDB Connexiondb; //initialise le contenu @Override public void initialize(URL url, ResourceBundle resources) { Connexiondb = new ConnexionDB(); } //------------------------------AfficherDB---------------------// @FXML private void AfficheDB(ActionEvent event) { try { Connection connexion = Connexiondb.Connect(); JoueursList = FXCollections.observableArrayList(); //Excecute la requete et envoie dans ResultSet ResultSet requete = connexion.createStatement().executeQuery("SELECT * FROM joueurs"); while (requete.next()) { //Obtiention des elements de la db JoueursList.add(new Joueurs( requete.getString(4), requete.getString(3), requete.getString(5), requete.getInt(2), requete.getString(6), requete.getString(7))); } //System.out.println("Obtention des éléments : ok"); } catch (SQLException e) { System.out.println("Requête impossible à effectuer Erreur :" + e); } //Ajouter la valeur de la requete dans le Panel //ATTENTION utiliser les mêmes valeurs que les fx:id du fichier FXML! Nom.setCellValueFactory(new PropertyValueFactory<>("Nom")); Prenom.setCellValueFactory(new PropertyValueFactory<>("Prenom")); Poste.setCellValueFactory(new PropertyValueFactory<>("Poste")); numero.setCellValueFactory(new PropertyValueFactory<>("numero")); Date_de_naissance.setCellValueFactory(new PropertyValueFactory<>("Date_de_naissance")); Nationalite.setCellValueFactory(new PropertyValueFactory<>("Nationalite")); //System.out.println("ajout des le tableau : ok "); Tableau.setItems(null); Tableau.setItems(JoueursList); } //-------------------------------Ajouter-----------------------// ////////TEST//////// @FXML private void AjouterDB(ActionEvent event) { try { Connection connexion = Connexiondb.Connect(); //Excecute la requete et envoie dans ResultSet String RequeteAjout = "INSERT INTO `joueurs`(`JoueurID`,`Numero`, `Prenom`, `Nom`, `Poste`, `Date_de_naissance`, `Nationalite`, `ClubID`) VALUES (NULL,numero.getInt(4),NULL,NULL, NULL,NULL,NULL ,'1')"; /*TFPrenom.getText(), TFNom.getText(), TFPoste.getText(), TFDate_de_naissance.getText() , TFNationalite.getText()*/ PreparedStatement PreparedStmt = connexion.prepareStatement(RequeteAjout); PreparedStmt.executeUpdate(RequeteAjout); //TEST DEBUG/// System.out.println("Obtention des éléments : ok"); } catch (SQLException e) { System.out.println("Ajout impossible à effectuer.\nErreur :" + e); } } /* ///TO DO @FXML private void SupprimerDB(ActionEvent event) { try { Connection connexion = Connexiondb.Connect(); //Excecute la requete et envoie dans ResultSet String RequeteAjout = "INSERT INTO joueurs(JoueurID,Numero, Prenom, Nom, Poste,Date_de_naissance, Nationalite, CLUBID) VALUES ('',"+numero.getText()+","+Prenom.getText()+"," + Nom.getText() + "," + Poste.getText() + "," + Date_de_naissance.getText() + "," + Nationalite.getText() + ",'1')"; PreparedStatement PreparedStmt = connexion.prepareStatement(RequeteAjout); PreparedStmt.executeUpdate(RequeteAjout); //TEST DEBUG/// System.out.println("Obtention des éléments : ok"); } catch (SQLException e) { System.out.println("Ajout impossible à effectuer.\nErreur :" + e); } } ///TO DO @FXML private void ModifierDB(ActionEvent event) { try { Connection connexion = Connexiondb.Connect(); //Excecute la requete et envoie dans ResultSet String RequeteAjout = "INSERT INTO joueurs(JoueurID,Numero, Prenom, Nom, Poste,Date_de_naissance, Nationalite, CLUBID) VALUES ('',"+numero.getText()+","+Prenom.getText()+"," + Nom.getText() + "," + Poste.getText() + "," + Date_de_naissance.getText() + "," + Nationalite.getText() + ",'1')"; PreparedStatement PreparedStmt = connexion.prepareStatement(RequeteAjout); PreparedStmt.executeUpdate(RequeteAjout); //TEST DEBUG/// System.out.println("Obtention des éléments : ok"); } catch (SQLException e) { System.out.println("Ajout impossible à effectuer.\nErreur :" + e); } } */ }
Code : Joueurs.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 <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Button?> <?import javafx.scene.control.Label?> <?import javafx.scene.control.SplitPane?> <?import javafx.scene.control.TableColumn?> <?import javafx.scene.control.TableView?> <?import javafx.scene.control.TextField?> <?import javafx.scene.layout.Pane?> <Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="505.0" prefWidth="765.0" xmlns="http://javafx.com/javafx/8.0.102" xmlns:fx="http://javafx.com/fxml/1" fx:controller="AfficherListeDB.Controleur.PanelCtrl"> <children> <SplitPane prefHeight="505.0" prefWidth="552.0"> <items> <TableView fx:id="Tableau" prefHeight="200.0" prefWidth="200.0"> <columns> <TableColumn fx:id="Nom" prefWidth="89.99996948242188" text="Nom" /> <TableColumn fx:id="Prenom" prefWidth="110.0" text="Prénom" /> <TableColumn fx:id="Poste" prefWidth="97.0" text="Poste" /> <TableColumn fx:id="numero" prefWidth="62.0" text="Numéro" /> <TableColumn fx:id="Date_de_naissance" prefWidth="119.0" text="Date de Naissance" /> <TableColumn fx:id="Nationalite" prefWidth="78.0" text="Nationalité" /> </columns> </TableView> </items> </SplitPane> <!--- < A Ajouter /> --> <Button fx:id="BAjouter" layoutX="588.0" layoutY="346.0" mnemonicParsing="false" onAction="#AjouterDB" prefHeight="25.0" prefWidth="68.0" text="Ajouter" /> <!--- < <Button fx:id="BSupprimer" onAction="#SupprimerDB" layoutX="614.0" layoutY="389.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="95.0" text="Supprimer" /> <Button fx:id="BModifier" onAction="#ModifierDB" layoutX="662.0" layoutY="346.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="68.0" text="Modifier" /> /> --> <Button fx:id="BAffiche" layoutX="586.0" layoutY="444.0" mnemonicParsing="false" onAction="#AfficheDB" text="Afficher la liste de joueurs" /> <Label layoutX="568.0" layoutY="59.0" prefHeight="17.0" prefWidth="37.0" text="Nom :" /> <TextField fx:id="TFNom" layoutX="622.0" layoutY="55.0" prefHeight="25.0" prefWidth="127.0" promptText="Nom" /> <Label layoutX="568.0" layoutY="86.0" prefHeight="17.0" prefWidth="55.0" text="Prénom :" /> <TextField fx:id="TFPrenom" layoutX="622.0" layoutY="82.0" prefHeight="25.0" prefWidth="127.0" promptText="Prénom" /> <Label layoutX="568.0" layoutY="114.0" prefHeight="17.0" prefWidth="55.0" text="Poste :" /> <TextField fx:id="TFPoste" layoutX="622.0" layoutY="110.0" prefHeight="25.0" prefWidth="127.0" promptText="Poste" /> <Label layoutX="568.0" layoutY="144.0" prefHeight="17.0" prefWidth="55.0" text="Numéro :" /> <TextField fx:id="TFnumero" layoutX="622.0" layoutY="140.0" prefHeight="25.0" prefWidth="127.0" promptText="Numéro" /> <Label layoutX="571.0" layoutY="175.0" prefHeight="17.0" prefWidth="68.0" text="Ddn :" /> <TextField fx:id="TFDate_de_naissance" layoutX="622.0" layoutY="171.0" prefHeight="25.0" prefWidth="127.0" promptText="ex. 2017-01-01" /> <Label layoutX="571.0" layoutY="203.0" prefHeight="17.0" prefWidth="68.0" text="Nation. :" /> <TextField fx:id="TFNationalite" layoutX="622.0" layoutY="199.0" prefHeight="25.0" prefWidth="127.0" promptText="Nationalité" /> </children> </Pane>
Code : ConnexionDB.java (Main)
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 package AfficherListeDB; public class Joueurs { private String Nom; private String Prenom; private String Poste; private int numero; private String Date_de_naissance; private String Nationalite; //Constructeurs public Joueurs(String nom, String prenom, String poste, int numero, String date_de_naissance, String nationalite) { Nom = nom; Prenom = prenom; Poste = poste; this.numero = numero; Date_de_naissance = date_de_naissance; Nationalite = nationalite; } //Getters public String getNom() {return Nom;} public String getPrenom() {return Prenom;} public String getPoste() {return Poste;} public int getNumero() {return numero;} public String getDate_de_naissance() {return Date_de_naissance;} public String getNationalite() {return Nationalite;} //Setters public void setNom(String nom) {Nom = nom;} public void setPrenom(String prenom) {Prenom = prenom;} public void setPoste(String poste) {Poste = poste;} public void setNumero(int numero) {this.numero = numero;} public void setDate_de_naissance(String date_de_naissance) {Date_de_naissance = date_de_naissance;} public void setNationalite(String nationalite) {Nationalite = nationalite;} }
Votre aide serait la bienvenue !
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 package AfficherListeDB; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; import java.sql.*; public class ConnexionDB extends Application { @Override public void start(Stage primaryStage) throws Exception{ Parent root = FXMLLoader.load(getClass().getResource("vue/Panel.fxml")); primaryStage.setTitle("Tableau de Joueur"); Scene scene = new Scene(root); primaryStage.setScene(scene); primaryStage.setResizable(true); primaryStage.show(); } public Connection Connect(){ try { /** connexion a la base de données a changer suivant votre configuration * Déclaration des variables de connection * @since 01/2017 */ String url = "jdbc:mysql://localhost:3306/poo"; String user = "root"; String pass = ""; Class.forName("com.mysql.jdbc.Driver"); Connection connexion = DriverManager.getConnection(url, user, pass); // System.out.println("Driver OK"); return connexion; } catch (ClassNotFoundException | SQLException e) { // gestion des erreurs System.out.println("Pas trouvé le Driver erreur :"+e); } return null; } public static void main(String[] args) { launch(args); } }![]()
Ps : Si vous avez des conseils, je suis preneur. Toute remarque est positive ! Je précise que je suis débutant![]()
Bien à vous,
Miguel
Partager