bonsoir les dev j'ai besoin d'une solution pour passer une date en parametre de preparedstatement
bonsoir les dev j'ai besoin d'une solution pour passer une date en parametre de preparedstatement
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.
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. ... }
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.
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.
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.
c'est justement ce que je veux et l'ai fait exactement comme ça mais ça marche pas
Et le problème c'est côté java. En sql quand je teste ça marche très bien.
"Ç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.
pas de message d'erreur pas d'exception rien du tout. attends je tenvoi toute la méthode
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; }
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.
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 catch (Exception e) { e.printStackTrace(); }
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 catch(SQLException e) { e.printStackTrace(System.err); System.err.println("SQLState: " + e.getSQLState()); System.err.println("Error Code: " + e.getErrorCode()); }
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.
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; }
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.
Partager