Problème dans l'insertion dans la base de donnée

Résolu/Fermé
amanaxy Messages postés 7 Date d'inscription samedi 5 décembre 2015 Statut Membre Dernière intervention 25 mars 2016 - 5 déc. 2015 à 13:25
amanaxy Messages postés 7 Date d'inscription samedi 5 décembre 2015 Statut Membre Dernière intervention 25 mars 2016 - 5 déc. 2015 à 15:03
Bonjour :)

j'ai un problème dans l'insertion dans la base de donnée
En effet, j'ai fait deux classes : Voyageur et réservation
la classe réservation va prendre un attribut de type voyageur
voici le code de la classe réservation



public class Reservation {

private int idReservation;
private String billet;
private float tarif;
private Voyageur voy;



public Reservation(){

}

public Reservation(int idResevation,String billet,float tarif,Voyageur voy)
{
this.idReservation=idReservation;
this.billet=billet;
this.tarif=tarif;
this.voy=voy;

}



public Reservation(String billet,float tarif,Voyageur voy)
{
this.billet=billet;
this.tarif=tarif;
this.voy=voy;

}

public int getIdReservation() {
return idReservation;
}


public void setIdReservation(int idReservation) {
this.idReservation = idReservation;
}

public String getBillet() {
return billet;
}


public void setBillet(String billet) {
this.billet = billet;
}

/**
  • @return the tarif */ public float getTarif() { return tarif; } public void setTarif(float tarif) { this.tarif = tarif; } public Voyageur getVoyageur() { return voy; } public void setVoyageur(Voyageur voy) { this.voy = voy; } @Override public String toString() { return "réservation{" + "idReservation=" + idReservation+ ", billet=" + billet + ", tarif=" + tarif+ ", voyageur"+voy+'}'; } }


je déclare un objet de type voyageur et je l'insère dans la table voyageur dans la base de donnée puis je déclare un objet de type réservation qui prend en paramètre l'objet de type voyageur déjà déclaré et je l'insère dans la table réservation

voici le code





Voyageur v2= new Voyageur(458945, "k", "s", "f", "ar", d, 94, "s ", "s", "mail");

VoyageurDAO vd= new VoyageurDAO();
vd.ajouterVoyageur(v2);

Reservation R2=new Reservation ("billet1",0.5f,v2);

ReservationDAO rd=new ReservationDAO();

rd.ajouterReservation(R2);






voici le code de la méthode ajouterReservation




public void ajouterReservation(Reservation r) {
requete = "insert into reservation (billet,tarif,id_Voyageur) values(?,?,?)";
try {
PreparedStatement ps=con.prepareStatement(requete);

ps.setString(1, r.getBillet());
ps.setFloat(2, r.getTarif());
ps.setInt(3, r.getVoyageur().getIdVoyageur());


ps.executeUpdate();
System.out.println("Réservation ajoutée");
} catch (SQLException ex) {
System.out.println(ex);
}

}





Le problème c'est que dans la table reservation idVoyageur prend toujours la valeur 0



2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
5 déc. 2015 à 14:21
Bonjour,

Est-ce que tu peux nous mettre ta classe Voyageur, pour en particulier voir le lien entre
new Voyageur(458945, ...
et
r.getVoyageur().getIdVoyageur()
...
0
amanaxy Messages postés 7 Date d'inscription samedi 5 décembre 2015 Statut Membre Dernière intervention 25 mars 2016
5 déc. 2015 à 14:28
voici la classe voyageur



public class Voyageur {

private int idVoyageur;
private int cin;
private String nom;
private String prenom;

private String sexe;
private String adresse;
private Date date_naissance;
private int numero_telephone;

private String login;
private String password;
private String email;






public Voyageur(){

}

public Voyageur(int idVoyageur,int cin,String nom,String prenom,String sexe,String adresse,Date date_naissance,int numero_telephone,String login,String password,String email)
{
this.idVoyageur=idVoyageur;
this.cin=cin;
this.nom=nom;
this.prenom=prenom;
this.sexe=sexe;

this.adresse=adresse;
this.date_naissance=date_naissance;
this.numero_telephone=numero_telephone;
this.login=login;

this.password=password;
this.email=email;

}



public Voyageur(int cin,String nom,String prenom,String sexe,String adresse,Date date_naissance,int numero_telephone,String login,String password,String email)
{
this.nom=nom;
this.cin=cin;
this.prenom=prenom;
this.sexe=sexe;

this.adresse=adresse;
this.date_naissance=date_naissance;
this.numero_telephone=numero_telephone;
this.login=login;

this.password=password;
this.email=email;


}






@Override
public String toString() {
return "voyageur{" + "idVoyageur=" + idVoyageur+ ", nom=" + nom + ", prenom=" + prenom+ ", sexe"+sexe+ ", adresse=" + adresse+ ", date_naissance=" + date_naissance + ", numero_telephone=" + numero_telephone+ ", login=" + login + ", password=" + password+ ", email"+email+ '}';
}


public int getIdVoyageur() {
return idVoyageur;
}


public void setIdVoyageur(int idVoyageur) {
this.idVoyageur = idVoyageur;
}


public int getCin() {
return cin;
}


public void setCin(int cin) {
this.cin = cin;
}


public String getNom() {
return nom;
}


public void setNom(String nom) {
this.nom = nom;
}


public String getPrenom() {
return prenom;
}


public void setPrenom(String prenom) {
this.prenom = prenom;
}


public String getSexe() {
return sexe;
}


public void setSexe(String sexe) {
this.sexe = sexe;
}


public String getAdresse() {
return adresse;
}


public void setAdresse(String adresse) {
this.adresse = adresse;
}


public Date getDate_naissance() {
return date_naissance;
}


public void setDate_naissance(Date date_naissance) {
this.date_naissance = date_naissance;
}


public int getNumero_telephone() {
return numero_telephone;
}


public void setNumero_telephone(int numero_telephone) {
this.numero_telephone = numero_telephone;
}


public String getLogin() {
return login;
}


public void setLogin(String login) {
this.login = login;
}


public String getPassword() {
return password;
}


public void setPassword(String password) {
this.password = password;
}


public String getEmail() {
return email;
}


public void setEmail(String email) {
this.email = email;
}


}



voici le DAO de la classe voyageur



public class VoyageurDAO implements VoyageurIDAO{


private Connection con = MaConnection.getInstance();
private String requete;
PreparedStatement ps;



@Override
public void supprimerVoyageur(int idV) {

requete = "delete from voyageur where idV=?";

try {
ps = con.prepareStatement(requete);
ps.setInt(1,idV);
int res = ps.executeUpdate();
if (res != 0) {
System.out.println("Voyageur a été suuprimé avec succée :) ");
}

} catch (SQLException ex) {

System.out.println("Echec de suppression ! " + ex.getMessage());
}

}

@Override
public void modifierVoyageur(Voyageur v) {
String sql = "update voyageur set idV=?, cin=?,nom=?, prenom=?, sexe=?, adresse=?, date_naissance=?, numero_telephone=?, login=?, password=?, email=? where idV=" + v.getIdVoyageur();

try {
ps = con.prepareStatement(sql);
ps.setInt(1, v.getIdVoyageur());
ps.setInt(2, v.getCin());
ps.setString(3, v.getNom());
ps.setString(4, v.getPrenom());
ps.setString(5, v.getSexe());
ps.setString(6, v.getAdresse());
ps.setDate(7, v.getDate_naissance());
ps.setInt(8, v. getNumero_telephone());

ps.setString(9, v.getLogin());
ps.setString(10, v.getPassword());
ps.setString(11, v. getEmail());


int res = ps.executeUpdate();

if (res != 0) {
System.out.println("Mise à jour effectuée avec succès :) ");
}

} catch (SQLException ex) {
System.out.println("Echec de la mise à jour ! " + ex.getMessage());
}

}




@Override
public Voyageur getVoyageurById(int idV) {



String requete = "select * from voyageur where idV=?";
Voyageur v = null;
try {

PreparedStatement ps = con.prepareStatement(requete);
ps.setInt(1, idV);
ResultSet res = ps.executeQuery();

if (res.next()) {

v= new Voyageur(res.getInt("idV"), res.getInt("cin"), res.getString("nom"), res.getString("prenom"),res.getString("sexe"), res.getString("adresse"), res.getDate("date_naissance"), res.getInt("numero_telephone"),res.getString("login"), res.getString("password"), res.getString("email") );

}

return v;

} catch (SQLException ex) {

System.out.println("Echec d'affichege de ce VOYAGEUR! " + ex.getMessage());

return null;
}




}



@Override
public void ajouterVoyageur(Voyageur v) {
requete = "insert into voyageur (cin,nom,prenom,sexe,adresse,date_naissance,numero_telephone,login,password,email) values(?,?,?,?,?,?,?,?,?,?)";
try {
PreparedStatement ps=con.prepareStatement(requete);

ps.setInt(1, v.getCin());
System.out.println("mmmmmmmmmmmm"+v.getCin());
ps.setString(2, v.getNom());
ps.setString(3, v.getPrenom());
ps.setString(4, v.getSexe());
ps.setString(5, v.getAdresse());
ps.setDate(6, v.getDate_naissance());
ps.setInt(7, v.getNumero_telephone());
ps.setString(8, v.getLogin());
ps.setString(9, v.getPassword());
ps.setString(10, v.getEmail());


ps.executeUpdate();
System.out.println("Voyageur ajoutée");
} catch (SQLException ex) {
System.out.println(ex);
}
}




@Override
public List<Voyageur> afficher() {


List<Voyageur> voyageurs = new ArrayList<Voyageur>();
Voyageur v = null;
requete = "select * from voyageur";

try {

ps = con.prepareStatement(requete);
ResultSet res = ps.executeQuery();

while (res.next()) {
v= new Voyageur(res.getInt("idV"), res.getInt("cin"), res.getString("nom"), res.getString("prenom"),res.getString("sexe"), res.getString("adresse"), res.getDate("date_naissance"), res.getInt("numero_telephone"),res.getString("login"), res.getString("password"), res.getString("email") );

voyageurs.add(v);
}

} catch (SQLException ex) {

System.out.println("Echec d'affichage de la liste des voyageurs ! " + ex.getMessage());
}
return voyageurs;

}
}





et le DAO de la classe réservation





public class ReservationDAO implements ReservationIDAO{


private Connection con = MaConnection.getInstance();
private String requete;
PreparedStatement ps;

@Override
public void ajouterReservation(Reservation r) {
requete = "insert into reservation (billet,tarif,id_Voyageur) values(?,?,?)";
try {
PreparedStatement ps=con.prepareStatement(requete);

ps.setString(1, r.getBillet());
ps.setFloat(2, r.getTarif());
ps.setInt(3, r.getVoyageur().getIdVoyageur());


ps.executeUpdate();
System.out.println("Réservation ajoutée");
} catch (SQLException ex) {
System.out.println(ex);
}

}

@Override
public void supprimerReservation(int id_Reservation) {

requete = "delete from reservation where id_Reservation=?";

try {
ps = con.prepareStatement(requete);
ps.setInt(1, id_Reservation);
int res = ps.executeUpdate();
if (res != 0) {
System.out.println("Réservation a été suuprimé avec succée :) ");
}

} catch (SQLException ex) {

System.out.println("Echec de suppression ! " + ex.getMessage());
}




}

@Override
public void modifierReservation(Reservation r) {

String sql = "update reservation set billet=?,tarif=? where id_Reservation=" + r.getIdReservation();

try {
ps = con.prepareStatement(sql);

ps.setString(2, r.getBillet());
ps.setFloat(3, r.getTarif());
ps.setInt(4, r.getVoyageur().getIdVoyageur());


int res = ps.executeUpdate();

if (res != 0) {
System.out.println("Mise à jour effectuée avec succès :) ");
}

} catch (SQLException ex) {
System.out.println("Echec de la mise à jour ! " + ex.getMessage());
}







}

@Override
public Reservation getReservationById(int id_Reservation) {

String requete = "select * from reservation where id_Reservation=?";
Reservation r = null;
VoyageurDAO vd=new VoyageurDAO();
try {

PreparedStatement ps = con.prepareStatement(requete);
ps.setInt(1, id_Reservation);
ResultSet res = ps.executeQuery();

if (res.next()) {

r= new Reservation(res.getInt("id_reservation"), res.getString("billet"), res.getFloat("tarif"), vd.getVoyageurById(res.getInt("id_Voyageur")));

}

return r;

} catch (SQLException ex) {

System.out.println("Echec d'affichege de cette réservation ! " + ex.getMessage());

return null;
}




}

@Override
public List<Reservation> afficher() {

List<Reservation> reservations = new ArrayList<Reservation>();
Reservation r = null;
VoyageurDAO vd=new VoyageurDAO();
requete = "select * from reservation";

try {

ps = con.prepareStatement(requete);
ResultSet res = ps.executeQuery();

while (res.next()) {
r= new Reservation(res.getInt("id_Reservation"), res.getString("billet"), res.getFloat("tarif"),vd.getVoyageurById( res.getInt("id_Voyageur")));

reservations.add(r);
}

} catch (SQLException ex) {

System.out.println("Echec d'affichage de la liste des réservations ! " + ex.getMessage());
}
return reservations;

}


}








0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
5 déc. 2015 à 14:37
Quand tu fais
new Voyageur(458945, "k", "s", "f", "ar", d, 94, "s  ", "s", "mail");
c'est le constructeur
public Voyageur(int cin,String nom...)
que tu utilises, et il n'y a pas de gestion de l'identifiant du voyageur, qui vaut 0 par défaut.
Tu devrais utiliser ton premier constructeur
public Voyageur(int idVoyageur,int cin,String nom...)
ou la méthode
setIdVoyageur
pour corriger le problème.
0
amanaxy Messages postés 7 Date d'inscription samedi 5 décembre 2015 Statut Membre Dernière intervention 25 mars 2016
5 déc. 2015 à 14:42
oui mais j'ai fait dans la table voyageur l'idVoyageur Auto_Increment
donc je peux utiliser le constructeur public Voyageur(int cin, String nom...)
0
amanaxy Messages postés 7 Date d'inscription samedi 5 décembre 2015 Statut Membre Dernière intervention 25 mars 2016
5 déc. 2015 à 14:43
et le problème c'est dans la table réservation il prend toujours l'idvoyageur 0
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
5 déc. 2015 à 14:55
Si tu fais l'auto incrément alors il ne faut pas faire
insert into reservation (billet,tarif,id_Voyageur) values(?,?,?)
parce que id_Voyageur est mis à 0 avec
ps.setInt(3, r.getVoyageur().getIdVoyageur());
puisque
idVoyageur=0
...

Par contre l'auto incrément devrait fonctionner avec
insert into reservation (billet,tarif) values(?,?)
, dans ce cas idVoyageur ne sera pas pris en compte (même s'il est différent de 0...)
0
amanaxy Messages postés 7 Date d'inscription samedi 5 décembre 2015 Statut Membre Dernière intervention 25 mars 2016
5 déc. 2015 à 15:03
ok merci :)))
0