Update
Résolu
tshindima
Messages postés
18
Statut
Membre
-
tshindima Messages postés 18 Statut Membre -
tshindima Messages postés 18 Statut Membre -
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);}
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);}
2 réponses
-
Bonjour,
D'une part tu mélangesBoolean kal
etString Kal
, ici ta condition sur codelect devrait êtreKal
et nonkal
.
De plus pour que ça fonctionne il faudrait mettre des apostrophes autour de ta chaîne de caractèresKal
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(); -
Merci bcp je suis parvenu à la solution grace a votre assistance