fonction qui retourne nb jours entre 2 dates

fonction qui retourne nb jours entre 2 dates - Java - Programmation

Marsh Posté le 10-10-2005 à 14:15:36    

j'ai besoins de faire une fonction qui me retourne le nombre de jours entre 2 dates d'un objet... je nage... j'ai écrit ca  

Code :
  1. public int getNbJours(Abonnement abt) {
  2.     String requete =
  3.         "SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id =" +
  4.         abt.getAbt_id();
  5.     nbJours = ?????
  6.     return nbJours;
  7.   }

Reply

Marsh Posté le 10-10-2005 à 14:15:36   

Reply

Marsh Posté le 10-10-2005 à 14:19:20    

Oui, et ?
 
C'est du Java ou du SQL ?
 
Que se passe-t-il ? Msg d'erreur ? Résultat incorrect ?
 
[:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 10-10-2005 à 14:19:39    

Et si tu récupérais tes dates de début et de fin via une requete SQL, et que tu calculais la différence en Java via des objets GgregorianCalendar ?
Je dis ca, on est dans la cat Java la  :o


---------------
Light is right
Reply

Marsh Posté le 10-10-2005 à 14:28:59    

j'utilise jcalendar pour récupérer mes dates

Reply

Marsh Posté le 10-10-2005 à 14:29:06    

Faire une recherche sur "JDBC", "tutorial JDBC" sur le site de Sun pour découvrir comment se connecter à la DB et exécuter des queries.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 10-10-2005 à 14:32:08    

sircam a écrit :

Faire une recherche sur "JDBC", "tutorial JDBC" sur le site de Sun pour découvrir comment se connecter à la DB et exécuter des queries.


ca je sais c'est pas le problème, le truc c'est que mon abt.getAbt_id(); est tjrs à -1, je n'arrive pas à l'initialiser avec l'id que j'ai récupéré

Code :
  1. void jButtonisPaye_actionPerformed(ActionEvent e) {
  2.     if (jTableAbonnements.getSelectedRow() != -1) {
  3.       int id = ( (Integer) jTableAbonnements.getValueAt(jTableAbonnements.
  4.           getSelectedRow(), 0)).intValue();
  5.      
  6.       abonnement = new Abonnement(id);
  7.       int nbJours = requetesAbonnement.getNbJours(abonnement);
  8.       System.out.println(nbJours);
  9.     }

Reply

Marsh Posté le 10-10-2005 à 14:37:58    

[:kiki]
 
Les deux codes que tu viens de poster n'ont RIEN A VOIR l'un avec l'autre.
 
Si ta question est une question DB, enlèves le code AWT/SWING avant de poster.
 
Et inversément.
 
C'est normal que tu n'y arrives pas : tu mélanges tout sans maîtriser aucune des parties qui composent l'ensemble !


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 10-10-2005 à 14:42:09    

bon voila l'erreur

Citation :

Error in execute SQL
 
sql: SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id =-1
 
No row count was produced, code: 0, State: null

Reply

Marsh Posté le 10-10-2005 à 15:24:34    

Bon voila ou est le problème:

Code :
  1. int id = ( (Integer) jTableAbonnements.getValueAt(jTableAbonnements.
  2.           getSelectedRow(), 0)).intValue();


---------------
Light is right
Reply

Marsh Posté le 10-10-2005 à 15:35:08    

bon le problème du -1 venait de mon constructeur abonnement. Mais j'ai toujours cette erreur

Citation :

Error in execute SQL
 
sql: SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id = 39
 
No row count was produced, code: 0, State: null

Reply

Marsh Posté le 10-10-2005 à 15:35:08   

Reply

Marsh Posté le 10-10-2005 à 15:35:26    

nerisson a écrit :

Bon voila ou est le problème:

Code :
  1. int id = ( (Integer) jTableAbonnements.getValueAt(jTableAbonnements.
  2.           getSelectedRow(), 0)).intValue();



non ca ca marche

Reply

Marsh Posté le 10-10-2005 à 16:00:17    

uxam a écrit :

non ca ca marche


Pour la 2è fois : tu peux être plus précis et plus rigoureux ?   [:pingouino]  


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 10-10-2005 à 17:15:58    

uxam a écrit :

bon le problème du -1 venait de mon constructeur abonnement. Mais j'ai toujours cette erreur

Citation :

Error in execute SQL
 
sql: SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id = 39
 
No row count was produced, code: 0, State: null



Faire voir le contenu de la ligne par un

Code :
  1. SELECT * FROM t_abonnement WHERE abt_id = 39


---------------
Light is right
Reply

Marsh Posté le 10-10-2005 à 18:53:57    

nerisson a écrit :

Faire voir le contenu de la ligne par un

Code :
  1. SELECT * FROM t_abonnement WHERE abt_id = 39



euh ben ca sort les info de l'abonnement 39

Reply

Marsh Posté le 10-10-2005 à 18:54:40    

sircam a écrit :

Pour la 2è fois : tu peux être plus précis et plus rigoureux ?   [:pingouino]


le problème c'est cette erreur

Citation :


Error in execute SQL
 
sql: SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id = 39
 
No row count was produced, code: 0, State: null

je ne comprends pas d'ou elle provient, je vois pas quel code mettre...

Reply

Marsh Posté le 11-10-2005 à 09:21:15    

uxam a écrit :

euh ben ca sort les info de l'abonnement 39


Eh bien si tu les mettais ici ? On y verrais plus clair nan ?


---------------
Light is right
Reply

Marsh Posté le 11-10-2005 à 10:03:17    

Roh la laaaa ! [:kiki]
 
Help us help you ! [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 11-10-2005 à 10:17:51    

un abonnement contient ces champs

Code :
  1. private Date abt_dateDebut = null;
  2.   private Date abt_dateFin = null;
  3.   private int abt_enCours = -1;
  4.   private double abt_Depot = -1;
  5.   private double abt_prix = -1;
  6.   private int abt_id = -1;
  7.   private int tat_id = -1 ;
  8.   private int rem_id = -1 ;
  9.   private int ca_id = -1 ;
  10.   private int abe_id = -1 ;

Reply

Marsh Posté le 11-10-2005 à 10:23:38    

uxam a écrit :

un abonnement contient ces champs

Code :
  1. private Date abt_dateDebut = null;
  2.   private Date abt_dateFin = null;
  3.   private int abt_enCours = -1;
  4.   private double abt_Depot = -1;
  5.   private double abt_prix = -1;
  6.   private int abt_id = -1;
  7.   private int tat_id = -1 ;
  8.   private int rem_id = -1 ;
  9.   private int ca_id = -1 ;
  10.   private int abe_id = -1 ;



 
toi t'es du genre à comprendre vite nan ? [:dawa]

Reply

Marsh Posté le 11-10-2005 à 10:24:11    

souk a écrit :

toi t'es du genre à comprendre vite nan ? [:dawa]


ca sert à quoi que je copie les résultats de la requete ? je marque le nom des colonnes [:itm]

Reply

Marsh Posté le 11-10-2005 à 10:30:27    

et tu veux pas nous donner les dates du resultset que tu recuperes ? [:itm]
et tu utilises quel SGBD ? quelle version ? [:itm]
as-tu essayé de faire marcher ton DATEDIFF en dehors de tout code java ?
si tu es sous MySQL, est-ce que c'est une version superieure a la 4.1.1 ?
 
si tu veux qu'on t'aide, il faut nous donner plus d'information [:itm]
le nom des colonnes ne nous aident pas des masse, les données nous aideront plus en effet [:pingouino]

Reply

Marsh Posté le 11-10-2005 à 10:35:15    

souk a écrit :

et tu veux pas nous donner les dates du resultset que tu recuperes ? [:itm]
et tu utilises quel SGBD ? quelle version ? [:itm]
as-tu essayé de faire marcher ton DATEDIFF en dehors de tout code java ?
si tu es sous MySQL, est-ce que c'est une version superieure a la 4.1.1 ?
 
si tu veux qu'on t'aide, il faut nous donner plus d'information [:itm]
le nom des colonnes ne nous aident pas des masse, les données nous aideront plus en effet [:pingouino]


oui la requete marche nikel si je la tappe dans le sgbd... L'erreur vient du java pas du sql...

Reply

Marsh Posté le 11-10-2005 à 10:42:35    

uxam a écrit :

oui la requete marche nikel si je la tappe dans le sgbd... L'erreur vient du java pas du sql...


C'est très bien ! [:dawa]
 
Maintenant, donne-nous les réponses nos autres questions, s.t.p. [:itm]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 11-10-2005 à 10:45:55    

uxam a écrit :

oui la requete marche nikel si je la tappe dans le sgbd... L'erreur vient du java pas du sql...


et l'erreur se produit quand ? au moment de l'exécution de la requète ou quand tu parcours ton resultSet ? [:dawa]
et si c'est quand tu parcours ton resultSet, comment parcours tu ton resultSet (hint: on veut du code [:dawa] ) ?

Reply

Marsh Posté le 11-10-2005 à 10:50:23    

sircam a écrit :

C'est très bien ! [:dawa]
 
Maintenant, donne-nous les réponses nos autres questions, s.t.p. [:itm]


j'utilise mysql  [:uxam] et les colonnes dates me retournent une date  :ouch: au format 2005-10-10 00:00:00... ma fonction :

Code :
  1. public int getNbJours(Abonnement abt) {
  2.     String requete =
  3.         "SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id = " +
  4.         abt.getAbt_id();
  5.     int nbJours = dbc.executeSQL(requete);
  6.     return nbJours;
  7.   }


 
l'endroit ou je l'appelle

Code :
  1. void jButtonAbonnementAdd_actionPerformed(ActionEvent e) {
  2.     typeAbonnement = (TypeAbonnement) jCmbxType.getSelectedItem();
  3.     int nbJours = requetesAbonnement.getNbJours(abonnement);
  4.     double prix = typeAbonnement.getTat_prix() * nbJours / 30;
  5.    
  6.     abonnement = new Abonnement(jdatechooser.getDate(),
  7.                                 jdatechooser2.getDate(),0,
  8.                                 1, Double.parseDouble(jTxtFieldDepot.getText()),
  9.                                 nbJours,
  10.                                 typeAbonnement.getTat_id(),
  11.                                 2,
  12.                                 2, idAbonne);
  13.    
  14.     requetesAbonnement.insertAbonnement(abonnement);
  15.    
  16.   }

Reply

Marsh Posté le 11-10-2005 à 10:56:54    

uxam a écrit :

j'utilise mysql  [:uxam] et les colonnes dates me retournent une date  :ouch: au format 2005-10-10 00:00:00... ma fonction :

Code :
  1. public int getNbJours(Abonnement abt) {
  2.     String requete =
  3.         "SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id = " +
  4.         abt.getAbt_id();
  5.     int nbJours = dbc.executeSQL(requete);
  6.     return nbJours;
  7.   }


 
l'endroit ou je l'appelle

Code :
  1. void jButtonAbonnementAdd_actionPerformed(ActionEvent e) {
  2.     typeAbonnement = (TypeAbonnement) jCmbxType.getSelectedItem();
  3.     int nbJours = requetesAbonnement.getNbJours(abonnement);
  4.     double prix = typeAbonnement.getTat_prix() * nbJours / 30;
  5.    
  6.     abonnement = new Abonnement(jdatechooser.getDate(),
  7.                                 jdatechooser2.getDate(),0,
  8.                                 1, Double.parseDouble(jTxtFieldDepot.getText()),
  9.                                 nbJours,
  10.                                 typeAbonnement.getTat_id(),
  11.                                 2,
  12.                                 2, idAbonne);
  13.    
  14.     requetesAbonnement.insertAbonnement(abonnement);
  15.    
  16.   }



 
au lieu de faire ton malin, tu peux nous dire ce qu'est dbc ? parce que je suppose que c'est un objet à toi dont tu ne nous parles pas parce qu' "il marche" ? (si tu veux qu'on continue à t'aider va falloir etre mois arrogant et repondre à nos questions, si on te les pose, c'est pas pour t'embeter, c'est pour localiser le probleme etant donné que tu ne donnes RIEN comme information intéressante)

Reply

Marsh Posté le 11-10-2005 à 11:04:27    

Code :
  1. public int executeSQL(String rsql)
  2.   {
  3.     int rec = 0 ;
  4.     Statement statmt = createStatement(connect) ;
  5.     try
  6.     {
  7.       rec = statmt.executeUpdate(rsql) ;
  8.     }
  9.     catch (SQLException se)
  10.     {
  11.       System.err.println("Error in execute SQL" ) ;
  12.       System.err.println("sql: " + rsql) ;
  13.       DBConnection.showListSqlExceptions(se) ;
  14.     }
  15.     return rec ;
  16.   }

Reply

Marsh Posté le 11-10-2005 à 11:13:45    

uxam a écrit :

Code :
  1. public int executeSQL(String rsql)
  2.   {
  3.     int rec = 0 ;
  4.     Statement statmt = createStatement(connect) ;
  5.     try
  6.     {
  7.       rec = statmt.executeUpdate(rsql) ;
  8.     }
  9.     catch (SQLException se)
  10.     {
  11.       System.err.println("Error in execute SQL" ) ;
  12.       System.err.println("sql: " + rsql) ;
  13.       DBConnection.showListSqlExceptions(se) ;
  14.     }
  15.     return rec ;
  16.   }



 
et executeUpdate, t'as été voir ce que ca fait dans la doc ? [:itm]

Reply

Marsh Posté le 11-10-2005 à 11:16:05    

souk a écrit :

et executeUpdate, t'as été voir ce que ca fait dans la doc ? [:itm]


un update ?   [:prodigy]

Reply

Marsh Posté le 11-10-2005 à 11:17:50    

faut que je remplace par quio alors ? :/

Reply

Marsh Posté le 11-10-2005 à 11:25:12    

Reply

Marsh Posté le 11-10-2005 à 11:25:28    

j'ai crée dans ma table une colonne durée, je pourrais faire un update de la colonne avec le SELECT datediff... ?

Reply

Marsh Posté le 11-10-2005 à 11:25:45    

sircam has left the topic to fetch his LART.
 
[:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 11-10-2005 à 11:30:49    

uxam a écrit :

un update ?   [:prodigy]


Citation :


executeUpdate
 
public int executeUpdate(String sql)
                  throws SQLException
 
    Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.
 
    Parameters:
        sql - an SQL INSERT, UPDATE or DELETE statement or an SQL statement that returns nothing  
    Returns:
        either the row count for INSERT, UPDATE or DELETE statements, or 0 for SQL statements that return nothing  
    Throws:
        SQLException - if a database access error occurs or the given SQL statement produces a ResultSet object
 
 


 
un select est-il un update/insert/delete ? [:itm]
 
pour commencer, tu vas aller faire le tuto de sun sur le jdbc, ensuite tu verras que tu fais un select, c'est a dire une REQUETE, donc tu utilises la methode bien nommée "executeQuery" tu récupèreras un ResultSet, et le résultat de ta requète sera dans ce ResultSet.... je peux pas faire plus là.... il faut que tu apprennes l'API JDBC ( http://java.sun.com/docs/books/tut [...] index.html (merci frabill pour l'url :jap: )
 
edit: j'ai mis en rouge ce qui est important [:souk]


Message édité par souk le 11-10-2005 à 11:32:26
Reply

Marsh Posté le 11-10-2005 à 11:32:34    

c'est bon je crios que j'ai trouvé

Code :
  1. public int getNbJours(Abonnement abt) {
  2.     int nbJours = 0;
  3.     String requete =
  4.         "SELECT DATEDIFF(abt_dateFin,abt_dateDebut) FROM t_abonnement WHERE abt_id = " +
  5.         abt.getAbt_id();
  6.     ResultSet rs = dbc.createResultSet(requete);
  7.     try {
  8.       if (rs != null) {
  9.         if (rs.next()) {
  10.           nbJours = rs.getInt(1);
  11.         }
  12.       }
  13.     }
  14.     catch (SQLException se) {
  15.       dbc.showListSqlExceptions(se);
  16.     }
  17.     try {
  18.       if (rs != null) {
  19.         rs.close();
  20.       }
  21.     }
  22.     catch (SQLException se) {
  23.       dbc.showListSqlExceptions(se);
  24.     }
  25.     return nbJours;
  26.   }

Reply

Marsh Posté le 11-10-2005 à 11:33:58    

[:ciler]
j'abandonne .... tant mieux si ca marche, bonne continuation

Reply

Marsh Posté le 11-10-2005 à 11:34:48    

souk a écrit :

[:ciler]
j'abandonne .... tant mieux si ca marche, bonne continuation


y a quoi de faux ?

Reply

Marsh Posté le 11-10-2005 à 11:41:25    

uxam a écrit :

y a quoi de faux ?


j'en sais rien, on ne connait pas la fonction dbc.createResultSet(...) ... on peut rien dire, le code que tu as posté ne nous sert à rien  [:souk]  
 
je pense qu'il faut vraiment que tu fasse un tuto JDBC, gestion d'exception et gestion de resources (Connection, etc.)  :sweat:

Reply

Marsh Posté le 11-10-2005 à 11:43:24    

Code :
  1. public ResultSet createResultSet(String rsql)
  2.   {
  3.     Statement statmt = createStatement(connect) ;
  4.     return createResultSet(statmt, rsql) ;
  5.   }


Code :
  1. public static Statement createStatement(Connection cnl)
  2.   {
  3.     Statement stmt = null ;
  4.     try
  5.     {
  6.       if (cnl != null)
  7.       {
  8.         stmt = cnl.createStatement() ;
  9.       }
  10.     }
  11.     catch (SQLException e)
  12.     {
  13.       System.err.println("Error in createStatement" ) ;
  14.       showListSqlExceptions(e) ;
  15.     }
  16.     finally
  17.     {
  18.       return stmt ;
  19.     }
  20.   }

Message cité 1 fois
Message édité par uxam le 11-10-2005 à 11:45:23
Reply

Marsh Posté le 11-10-2005 à 11:45:14    

uxam a écrit :

Code :
  1. public ResultSet createResultSet(String rsql)
  2.   {
  3.     Statement statmt = createStatement(connect) ;
  4.     return createResultSet(statmt, rsql) ;
  5.   }



 
tu te fous de nous ou quoi ? [:pingouino]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed