Requete sql qui ne passe pas

cs_oceane751 Messages postés 150 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 20 décembre 2012 - 4 mars 2008 à 23:26
cs_oceane751 Messages postés 150 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 20 décembre 2012 - 5 mars 2008 à 21:06
bonjour à tous

je suis sur un problème que je n'arrive pas à resoudre et je viens à vous pour que vous m'aidiez car là j'en peux plus

but de ma partie de code : inserer un nouveau rdv
l'utilisateur entre un nom, une heure et une date
à partir de cette heure et de cette date, je cherche dans ma bdd si pour cette heure il n'y a pas dejà un rdv qui a dejà été entré
si aucun rdv n'a dejà été entré dans la bdd, j'insere un nouveau rdv
le problème est même si une heure a dejà été entré, en fonction d'une date bien sur, ça insere quand meme
donc la verification n'est aps faite et je ne sais pas pourquoi

voici mon code :

public

void actionPerformed(ActionEvent e) {

if (e.getSource() =  = 
but){
Fonction fonc new  Fonction();String requetee  

"SELECT heure, date_rdv FROM membres ";ResultSet res =  fonc.Conec(requetee);

 try  {

while(res.next()){

String heureReq  = res.getString(

"heure");System.

 out .println(heureReq);String dateReq  =  res.getString(

"date_rdv");System.

out.println(dateReq);

 if  ( (heureReq  = =  
textheure.getText()) && (dateReq == 
textdate.getText()) ){ 

JOptionPane. showMessageDialog (

 null , 
"dejà une RDV pour cette heure",
"deja une RDV pour cette heure", JOptionPane.
NO_OPTION );

break;

}

else{

String requete   = 

"INSERT INTO membres (nom, heure, date_rdv) VALUES('"+
textnom.getText()+
"', '"+
textheure.getText()+
"', '"+
textdate.getText()+
"')"; 

//System.out.print(requete);

Fonction foncc =  

 new  Fonction();

int y  = foncc.maj(requete);

if (y != 0){

Disposition dispo = 

new Disposition();dispo.setVisible(

true);setVisible(

false);JOptionPane.showMessageDialog(

null, 
"insertion bien effectuéé",
"insertion bien effectuéé", JOptionPane.
OK_OPTION ); 

break;}

}

}

}

catch (SQLException e1) {

// TODO Auto-generated catch blocke1.printStackTrace();

}

} 

} 


si quelqu'un pourrait m'aider... se serait vraiment sympa...

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 mars 2008 à 06:47
Salut,

Oulà, y'a plusieurs choses qui ne vont pas là !

Tout d'abord, pour comparer 2 textes entre eux, il faut utiliser la fonction equals de la classe String, et non l'opérateur == qui ne fait que vérifier l'égalité des pointeurs, du coup :

String toto = "toto";
String tata = "toto";
toto == tata; // renvoie false !
toto.equals(tata); // renvoie true

Ensuite, les heures dans une base de données sont stockées bien souvent au format américain : MM/dd/yyyy et non au format français dd/MM/yyyy, c'est pour cela qu'il vaut mieux faire les comparaisons avec un GregorianCalendar bien paramètré plutôt qu'avec une pauvre String !

Enfin, tu stocke l'heure et la date dans ta base au format String, et dans deux champs différents ! Pourquoi ? Tu veux perdre de la place et perdre du temps ? Il est plus simple de stocker dans un champ datetime l'heure et la date, et la base de données pourra optimiser tes requêtes sur un tel champs !
______________________________________
DarK Sidious
0
cs_oceane751 Messages postés 150 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 20 décembre 2012
5 mars 2008 à 16:35
oui mais j'ai pas envie de m"embeter avec les datetime
donc le problème ne vient pas de là :s
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 mars 2008 à 19:03
Salut,

Les datetime n'est qu'une des améliorations que je propose, ton problème par contre vient du == à remplacer par un equals !

Et crois moi, tu t'embeterais beaucoup moins avec les datetimes plutôt qu'en faisant ta méthode de date et heure stockée en String !!!
______________________________________
DarK Sidious
0
cs_oceane751 Messages postés 150 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 20 décembre 2012
5 mars 2008 à 21:06
bon on m'a aidé et le probleme a été résolu
c'était un probleme de requete, de break et j'ai rajouté les flag
public

void actionPerformed(ActionEvent e) {

if (e.getSource().equals( 
but) ){
Fonction fonc new  Fonction();String requetee  

"SELECT heure, date_rdv FROM membres WHERE heure= '"+
textheure.getText()+
"' and date_rdv='"+
textdate.getText()+
"'";ResultSet res = fonc.Conec(requetee);

 int  flag  =0;

try {

if (flag = = 0){

 while (res.next()){

JOptionPane. showMessageDialog (

null, 
"dejà une RDV pour cette heure",
"deja une RDV pour cette heure", JOptionPane.
NO_OPTION );

break;

}

}

else{

String requete   = 

"INSERT INTO membres (nom, heure, date_rdv) VALUES('"+
textnom.getText()+
"', '"+
textheure.getText()+
"', '"+
textdate.getText()+
"')"; 

//System.out.print(requete);

Fonction foncc =  

 new  Fonction();

int y  = foncc.maj(requete);

if (y != 0){

Disposition dispo = 

new Disposition();dispo.setVisible(

true);setVisible(

false);JOptionPane.showMessageDialog(

null, 
"insertion bien effectuéé",
"insertion bien effectuéé", JOptionPane.
OK_OPTION ); 

//break;}

}

}

//}

catch (SQLException e1) {

e1.printStackTrace();

}

} 

} 


voilà, merci quand meme pour toutes vos reponses !!!!!!
0
Rejoignez-nous