Bonjour,
J'aimerais savoir comment ajouter les données à partir de calendrier, à la base de données ?
Quelqu'un saurait-il me guider un peu ?
J'utilise WampServer et PhpMyAdmin.
Merci d'avance pour votre aide.
Version imprimable
Bonjour,
J'aimerais savoir comment ajouter les données à partir de calendrier, à la base de données ?
Quelqu'un saurait-il me guider un peu ?
J'utilise WampServer et PhpMyAdmin.
Merci d'avance pour votre aide.
Tutoriel JDBC: http://jguillard.developpez.com/JDBC/
Une des bonnes façons de modéliser une interaction java/base de données: http://cyrille-herby.developpez.com/...c-pattern-dao/
Une fois ceci compris, vu que ton JDateChooser te renvoie un objet de type Date, il n'est pas difficile du tout d'aller stocker cette information dans une colonne typée Date dans Mysql
l'aider comment récuperer les donner
de jdatechooser et stoker dans la base de donner
par exemple:
j'ai utiluse une zonne de text sous netbeans:
variable=jTextField1.getText();
Salut,
MySQL stocke les dates sous format anglais (yyyy/MM/dd). Donc année suivie du mois suivi du jour. Tu dois transformer le contenu de ton composant en format anglais puis l'enregistrer dans ta base de données. Ce code peut t'aider :
Après cette transformation, tu peux aisement enregistrer ta valeur comme une chaine de caractères.Code:
1
2
3
4
5 //créer un format à appliquer à la date SimpleDateFormat sp=new SimpleDateFormat("yyyy/MM/dd"); //appliquer ce format à ta date obtenue de jDateChooser String date=sp.format(tonComposantDate.getDate());
PAN!
Que ce soit mysql ou n'importe quel base de données, tu ne peux pas en général être sur du format. Par contre, ce que tu peux être sur, c'est que si tu utilise statement.setDate(index,java.util.Date), tout se passera bien. Ne jamais essayer de stocker des dates sous forme de String dans une base de données, sauf si on cherche les emmerdes.
Merci pour la mise en garde, au fait je pensais plutôt que 2013/11/04 serait enregistré comme une date dans un champ de type Date dans une base de données. Tu peux bien m'éclaircir pour éviter des ignorances? Merci d'avance ;)
Mais aussi sur l'utilsation deCitation:
statement.setDate(index,java.util.Date)
Salut,
Quand on utilise le mode console ou les requêtes sous forme de chaînes de caractères, on est effectivement souvent obligé d'indiquer les dates sous forme de chaînes de caractères. Ceci oblige à bien connaître les formats pris en compte par le SGBD, mais aussi son paramétrage. En outre, ça fonctionne parfois par conversion, donc n'est pas le plus optimisé.
Lorsque tu utilises un PreparedStatement, son implémentation JDBC intègre déjà tous les traitements nécessaires pour traiter les dates, conformément aux attentes du SGBD et de son paramétrage. Traiter "à la main" ce que fait le driver est possible, mais ce n'est pas une bonne idée :
1) tu risques d'oublier des particularités qui vont faire que ça risque de ne pas fonctionner correctement à 100% (sans t'en apercevoir en plus, parce que ça plantera sur une configuration particulière que tu n'auras pas eu l'occasion d'avoir sous la main)
2) c'est un boulot inutile puisque déjà fait, et surement de manière plus complète
Sans parler en plus de l'intérêt d'utiliser des PreparedStatement pour éviter l'injection sql. Et qu'ils permettent à ton code de n'être plus dépendant du moteur et qu'un passage de mysql à postgres, ou oracle, ou autre, se fera de manière transparente.
PS je ne parle même pas de stocker des dates sous forme de chaines de caractères, qui n'apporte que des emmerdes comme l'a dit @Tchize_ (genre pour les tris, il faut les formatter AAAAMMJJ (l'an 10000 c'est dans longtemps ok ;)), mais du coup il faut les bidouiller pour les afficher (en fonction de la Locale) ; les between sont archi conpliqués, sans parler d'utiliser des index, etc...)...
Merci beaucoup Joel ;)
J'ignorais que PreparedStatement offre plus des avantages à part gérer des injonctions sql. Pigé, je ferai très attention now.
Je parlais surtout du fait que le preparedStatement n'a aucune conversion à faire. Puisque, sauf SGBD particulier, il transmet séparément les données du statement, quand tu fais un setDate, il envoie directement un timestamp à la base de données, sous forme numérique, et non pas sous forme d'une chaine de caractère. Quand je parlais de stocker sous forme de chaine, je parlais d'envoyer une chaine au sgbd, ce qui pose des problèmes de conversion, à moins de forcer une conversio sure avec des méthodes comme to_date, ce qui allourdi énormément la lecture de la requête SQL.
merci boucoup
Merci beaucoup tchize. C'est très précis et depuis votre intervention, je profite des services de PreparedStatement pour envoyer mes dates dans la base de données. Avec votre précision, je comprends mieux ce que je fais now. Merci de votre aide
Il Marche bien Merci