IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Passer une date en paramètre d'un PreparedStatement


Sujet :

JDBC Java

  1. #1
    Candidat au Club
    Homme Profil pro
    IGS-TECHNOLOGIES
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : IGS-TECHNOLOGIES

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Passer une date en paramètre d'un PreparedStatement
    bonsoir les dev j'ai besoin d'une solution pour passer une date en parametre de preparedstatement

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Utilise la méthode PreparedStatement.setDate(int, java.sql.Date). Si tu as une un java.util.Date, il faudra le convertir par new java.sql.Date(date.getTime());. Si tu as besoin de stocker un datetime, il faudra passer par un timestamp avec PreparedStatement.setTimeStamp(int, Timestamp) (conversion par new Timestamp(date.getTime()).
    Si tu as un LocalDate, ou un LocalDateTime à disposition, tu as java.sql.Date.valueOf(LocalDate) ou java.sql.Timestamp.valueOf(LocalDateTime), selon, pour faire la conversion.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Homme Profil pro
    IGS-TECHNOLOGIES
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : IGS-TECHNOLOGIES

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Oui, Joël, j'ai essayé, ça coince toujours. Je t'envoie un bout de code de ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public List<EEcole> listEcole (Date madate){
    preparedstatement ps =con.preparedstatement  ("select * from table where date like ?");
    ps.setDate (1,madate);
    ......
    récupérer les données. ...
    }

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Il faut que tu sois plus précis : "ça coince" ça ne veut rien dire. Tu as un message d'erreur ? Le résultat de la requête n'est pas celui que tu attends ? Autre ?

    Par ailleurs, je ne suis pas un expert SQL, mais un like sur une date, je ne pense pas que ça puisse fonctionner. Un like c'est pour chercher des chaines qui ressemblent à une autre (avec des métacaractères, comme le % et le _). Pour les dates, on fait de la comparaison (surpérieure à ou inférieure à telle date), ou on utilise un between pour chercher dans un intervalle, etc.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Candidat au Club
    Homme Profil pro
    IGS-TECHNOLOGIES
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : IGS-TECHNOLOGIES

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    ok merci d'avance de prendre ton temps pour me répondre..c'est justement un betwen que jutlise au faite je veux sélectionné les achats faite entre 2date mais le blem n pa côté sql plutôt c côté java.comment préparer ma req et attendre les données saisis par le client.je fait l'appli en mvc.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ce serait donc quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public List<EEcole> listEcole(Connnection con, java.sql.Date debut, jave.sql.Date fin){
       List<EEcole> list = new ArrayList<>();
    try(Preparedstatement ps = con.prepareStatement("select * from table where date between ? and ?")) {
       ps.setDate (1,debut);
       ps.setDate (2,fin);
       ResultSet rs = ps.execute();
       while(rs.next()) {
           ... =  rs.get...(1);
           ... = rs.get...(2);
           ...
           list.add(new EEcole(...));
     
       }
       return list;
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Candidat au Club
    Homme Profil pro
    IGS-TECHNOLOGIES
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : IGS-TECHNOLOGIES

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    c'est justement ce que je veux et l'ai fait exactement comme ça mais ça marche pas

  8. #8
    Candidat au Club
    Homme Profil pro
    IGS-TECHNOLOGIES
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : IGS-TECHNOLOGIES

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Et le problème c'est côté java. En sql quand je teste ça marche très bien.

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    "Ça ne marche pas", ça ne veut rien dire ! Il se passe quoi, ou il ne se passe pas quoi ? Il y'a un message d'erreur, quelque chose ? Est-ce qu'on peut avoir une description minimum et technique du problème ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Candidat au Club
    Homme Profil pro
    IGS-TECHNOLOGIES
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : IGS-TECHNOLOGIES

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    pas de message d'erreur pas d'exception rien du tout. attends je tenvoi toute la méthode

  11. #11
    Candidat au Club
    Homme Profil pro
    IGS-TECHNOLOGIES
    Inscrit en
    Septembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : IGS-TECHNOLOGIES

    Informations forums :
    Inscription : Septembre 2016
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public List<EAchat> listeAchat(java.sql.Date date1,java.sql.Date date2) {
    		List<EAchat> listP = new ArrayList<EAchat>();
    		Connection con=Connexion.getConnection();
    		try {
    			java.sql.PreparedStatement ps = con.prepareStatement
    			("select * from produit p,achat a where p.id_produit=a.id_produit and DATE_ACHAT between ? and ? )");
    			ps.setDate(1,date1);
    			ps.setDate(2, date2);
    			ResultSet rs = ps.executeQuery();
    				while(rs.next()){
    					EAchat a =new EAchat();
    						a.setNOM_PRODUIT(rs.getString("NOM_PRODUIT"));
    					listP.add(a);
    				}
    			 ps.close();
     
    		} catch (Exception e) {
     
    		}
    		return listP;
    	}

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Le problème avec ton code, c'est que tu ne peux même pas savoir s'il y a une erreur ou pas, parce que ton catch est vide. On doit toujours au minimum afficher quelque chose, comme la stacktrace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch (Exception e) {
       e.printStackTrace();
    }
    Pour les erreurs sql, on n'aura pas l'ensemble des informations utiles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    catch(SQLException e) {
    e.printStackTrace(System.err);
    System.err.println("SQLState: " + e.getSQLState());
    System.err.println("Error Code: " + e.getErrorCode());
    }
    Par ailleurs, il faut toujours fermer les ressources qu'on ouvre après les avoir utilisées, et dans tous les cas. Ton code ferme bien les ressources ouvertes par ta requête, sauf s'il y a exception.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public List<EAchat> listeAchat(java.sql.Date date1,java.sql.Date date2) {
    		List<EAchat> listP = new ArrayList<EAchat>();
    		Connection con=Connexion.getConnection();
    		try (java.sql.PreparedStatement ps = con.prepareStatement
    			("select * from produit p,achat a where p.id_produit=a.id_produit and DATE_ACHAT between ? and ? )") { // la structure try-with-ressource évite d'avoir à appeler explicitement ps.close() (qui ferme le PreparedStatement et le ResultSet associé
    			ps.setDate(1,date1);
    			ps.setDate(2, date2);
    			ResultSet rs = ps.executeQuery();
    				while(rs.next()){
    					EAchat a =new EAchat();
    						a.setNOM_PRODUIT(rs.getString("NOM_PRODUIT"));
    					listP.add(a);
    				}
     
    		} catch(SQLException e) {
                           e.printStackTrace(System.err);
                           System.err.println("SQLState: " + e.getSQLState());
                           System.err.println("Error Code: " + e.getErrorCode());
                    }
    		return listP;
    	}
    Eventuellement, selon comment est gérée ta connexion , il faudrait appliquer le même principe. Si elle poolée (ce qui n'est pas le cas, puisqu'il n'y a pas de release dans ton code), ou singleton, ça se fera autrement. Si elle est générée à chaque appel de getConnection(), il le faut.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [2014] Appel d'un programme java par SQL Server
    Par wilcul dans le forum Développement
    Réponses: 4
    Dernier message: 30/08/2016, 09h29
  2. programme JAVA et SQL
    Par Niko_de_bordo dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 28/05/2008, 15h24
  3. java et sql server
    Par vijeo dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 28/10/2005, 09h57
  4. [JDBC]Eclispe java et sql 2000
    Par vijeo dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 27/10/2005, 11h31
  5. Réponses: 2
    Dernier message: 06/10/2004, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo