cs_oceane751
Messages postés150Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention20 décembre 2012
-
4 mars 2008 à 23:26
cs_oceane751
Messages postés150Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention20 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...
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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
cs_oceane751
Messages postés150Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention20 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 !!!!!!