Salut,
String requete="INSERT INTO historique(durèe,coût) VALUES (' duree.getText() ',' total.getText()')";
Je ne vois pas ce qui t'étonne : ce qu'il y a entre " est la requête qui est envoyée au sgbd qui l'exécute et qui n'a aucun accès à ton programme d'une part, et qui n'a aucune raison d'interpreté des bouts de Java !
C'est comme que si tu écris :
System.out.println("INSERT INTO historique(durèe,coût) VALUES (' duree.getText() ',' total.getText()')";
ça va afficher exactement cette chaine : il n'y aura pas d'exécution du code Java entre les ".
Il faut récupérer les valeurs dans les champs et les concaténer dans la requête !
String requete="INSERT INTO historique(durèe,coût) VALUES ('"+ duree.getText() + "','"+ total.getText() +"')";
Mais la bonne manière de faire est d'utiliser un PreparedStatement : déjà ça va te simplifier la problématique des quotes (parce que n'oublie pas qu'on peut saisir des quotes dans des champs de saisie) et des dates aussi le cas échéant, et c'est plus sécurisé (empêche l'injection SQL).
1 2 3 4 5 6
| PreparedStatement statement = connection.prepareStatement("INSERT INTO historique(durèe,coût) VALUES ( ?, ?)");
statement.setString( 1, duree.getText() );
statement.setString( 2, total.getText() );
statement.executeUpdate(); |
Partager