Tu nous explique comment tu stocke un mois dans un type char?? Tu leur donne des lettres de A à L ?
Tu nous explique comment tu stocke un mois dans un type char?? Tu leur donne des lettres de A à L ?
Pardon c'est pas pour mois mais pour une autre valeur. Mais je vois pas quand même comment on fait
Le type char de base de données, c'est un type String en fait (on écrit char(50) par exemple, pour avoir 50 caractères). Donc on récupère la valeur par getString(). Si le type est char(1), on pourrait récupérer la valeur de type char par getString().charAt(0), mais, premièrement, je ne vois pas trop à quoi ça servirait (de le gérer en char, ou Character, plutôt qu'en String), deuxièmement, il faudrait qu'on soit sûr qu'il y ait toujours un caractère (un au moins), et troisièmement à la moindre évolution du paramétrage de la base, on serait obligé de modifier le code, parce qu'un char ne suffirait plus.
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.
Merci
J'ai cette requete qui ne passe pas en java alors qu'elle passe très bien dans mysql
Sa me retourne rien en java alors que dans mysql sa me retourne bien un enregistrement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Date dateJour = new Date(); SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); String dateJours = formater.format(dateJour); List<FicheFrais> lesFicheFrais = new ArrayList<FicheFrais>(); try{ statement = unAcces.connexionBdd().createStatement(); resultat = statement .executeQuery("SELECT FicheFrais.id AS idFiche, Users.id AS idUser, Users.nom AS nom, prenom, fonction, mois, annee, statut, CAST(SUM(coutTotal) + SUM(montantTTC) AS DECIMAL (15,2)) AS total, CAST(SUM(montantTVA) AS DECIMAL (15,2)) AS totalTVA" + "FROM DetailFiche" + "LEFT JOIN FicheFrais ON FicheFrais.id = DetailFiche.ficheFrais_id" + "LEFT JOIN Users ON Users.id = FicheFrais.users_id" + "WHERE statut = 'Validé' AND '"+dateJours+"'< DATE_ADD(dateValidation, INTERVAL 1 MONTH)" + "GROUP BY idFiche, idUser" + "ORDER BY annee, mois DESC");
Il n'y a pas de requête SQL et de requête Java : la requête que tu envoies via executeQuery en java est une requête SQL. Aussi faut-il exactement tester la même chose, c'est-à-dire la chaîne exacte que tu passes en argument de la méthode, pour comparer. C'est probablement à cause de la date mise "en dur", avec un format personnalisé, qui ne passe pas...
Pour éviter les déconvenues dues au formatage, et éviter d'autres problèmes, utilises plutôt un PreparedStatement, ce qui te permettra de passer la date en type java, sans avoir à te préoccuper de la forme que le SGBD s'attend à avoir. Sinon, il faut respecter cette forme très précisément.
EDIT : ce n'est peut être pas la date finalement, mais ça n'empêche pas d'utiliser quand même un PreparedStatement. Traces la chaîne exacte que tu envoies en requête SQL (avec System.out.println()) et tu verras tout de suite ce qui ne va pas (pour te mettre sur la voie, il manque des espaces quelque part à priori). Je suis (à moitié) étonné d'ailleurs que tu n'aies pas une SQLException : ne voyant pas le contenu du catch, je suppose que tu ne traces pas cette exception, donc tu ne voies pas que ta requête plante.
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.
Sa fonctionne!!!
Il manquait les espaces après les guillemets
Ainsi, pas besoin de chipoter les dates et le formatage. De plus, rien ne te garantis que le serveur mysql utilise le format que tu as passé en paramètres (yyyy-MM-dd) car ce format dépend d'information de Locale liée à la connection DB et ça peut très bien êter différente entre JDBC et la ligne de commande mysql!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Date dateJour = new Date(); List<FicheFrais> lesFicheFrais = new ArrayList<FicheFrais>(); try{ PreparedStatement ps = unAcces.connexionBdd().prepareStatement("SELECT FicheFrais.id AS idFiche, Users.id AS idUser, Users.nom AS nom, prenom, fonction, mois, annee, statut, CAST(SUM(coutTotal) + SUM(montantTTC) AS DECIMAL (15,2)) AS total, CAST(SUM(montantTVA) AS DECIMAL (15,2)) AS totalTVA" + " FROM DetailFiche" + " LEFT JOIN FicheFrais ON FicheFrais.id = DetailFiche.ficheFrais_id" + " LEFT JOIN Users ON Users.id = FicheFrais.users_id" + " WHERE statut = 'Validé' AND ? < DATE_ADD(dateValidation, INTERVAL 1 MONTH)" + " GROUP BY idFiche, idUser" + " ORDER BY annee, mois DESC"); ps.setDate(1,dateJour); resultat = ps.executeQuery(
Enfin, ton erreur de départ, c'est que tu as oublié des espaces entre les mots clés => syntax error en SQL. Si tu ne vois pas le message, c'est surement qu'après ce try{ t'as un catch à la con qui ne fais pas son boulot, je parie pour le catch vide!
EDIT: grillé
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager