Update

Résolu/Fermé
tshindima Messages postés 13 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 22 avril 2018 - 31 juil. 2014 à 13:59
tshindima Messages postés 13 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 22 avril 2018 - 31 juil. 2014 à 16:39
Bonjour,

Svp j'ai une BDD en Access ou j'ai prevu un champ oui/non (boolean) mais je n'arrive pas à faire l'update sur ce champ à prtir de Java.
Je vous demande svp de m'aider

Voici mon code


Boolean kal = null;
connect();
try{
String Kal = codeelecteur.getText().toUpperCase();
Statement st =con.createStatement();
int nb = st.executeUpdate("UPDATE lecteur SET candidat = "+true+" WHERE codelect="+kal+"");
st.close();
con.close();
if(nb==1){
JOptionPane.showMessageDialog(null,"LA MODIFICATION A ETE FAITE AVEC SUCCES!","MISE A JOUR DES DONNEES",JOptionPane.INFORMATION_MESSAGE);}
}
catch(Exception ex) {JOptionPane.showMessageDialog(null,"Echec de modification: "+ex);}



A voir également:

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
31 juil. 2014 à 14:39
Bonjour,

D'une part tu mélanges
Boolean kal
et
String Kal
, ici ta condition sur codelect devrait être
Kal
et non
kal
.

De plus pour que ça fonctionne il faudrait mettre des apostrophes autour de ta chaîne de caractères
Kal
dans la requête SQL.

" WHERE codelect='"+Kal+"'"

Cependant il y a des risques de sécurité important à faire ça, car il est tout à fait possible de mettre des apostrophes dans ta chaîne de caractères, cela transformerait la requête et on pourrait faire un peu n'importe quoi.

Exemple :
String Kal = "'; DROP TABLE lecteur; --";

Avec cette valeur de Kal, la requête devient :

UPDATE lecteur SET candidat = true WHERE codelect='';
DROP TABLE lecteur; --'

Cela effacera donc totalement la table lecteur de ta base de données...

Pour éviter cela il faut utiliser des PreparedStatement en Java.

PreparedStatement pstmt = con.prepareStatement(
    "UPDATE lecteur SET candidat = ? WHERE codelect = ?");
pstmt.setBoolean(1, true);
pstmt.setString(2, Kal);
pstmt.executeUpdate();
1
tshindima Messages postés 13 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 22 avril 2018 1
31 juil. 2014 à 16:39
Merci bcp je suis parvenu à la solution grace a votre assistance
1