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

Langage Java Discussion :

String to Date pour insertion sur MySQL


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut String to Date pour insertion sur MySQL
    Bonjour,

    Je sais que ce genre de post a du être fait un MILLION de fois, et ca me fait grave énerver de pas trouver tout seul.

    Mais là je sens que je vais commencer à taper sur l'écran.

    Je veux faire une insertion dans une table MySQL qui contient un champ date.
    pour celà, je récupère d'un formulaire un champs avec la valeur suivant "10/02/2010" qui est donc un String.

    ce que je fais, c'est que je veux le convertir en Date pour le stocker en BD.

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String textDate = dateForm.getText();
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    sdf.setLenient(false);
    Date date = sdf.parse(textDate)
    ;

    et j'ai l'erreur suivant :
    java.text.ParseException: Unparseable date: "10/02/2010".
    je précise que le Date vient de java.util.Date;

    quelqu'un aurait-il une idée de comment on peut corriger celà?

    ou carrément me dire qu'à partir d'un string, comment peut-on l'enregistrer dans une base MySQL dans un champ DATE?

    Je vous remercie d'avance de votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    a mon avis c'est pas ce code là qui est exécuté (vérifie dans la stacktrace). Ce code suivant fonctionne correctement, sans exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import java.util.*;
    import java.text.*;
    public class Test {
      public static void main (String[] argv) throws Exception{
         SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
         sdf.setLenient(false);
         sdf.parse("10/02/2010");
      }
    }

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut
    je vais me permettre de mettre tout le code de ma classe :
    je débute en Eclipse RCP.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    package com.application.ib;
     
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;
     
     
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.*;
    import org.eclipse.ui.forms.FormColors;
    import org.eclipse.ui.forms.IFormColors;
    import org.eclipse.ui.forms.widgets.FormToolkit;
    import org.eclipse.ui.forms.widgets.ScrolledForm;
    import org.eclipse.ui.part.ViewPart;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.events.SelectionListener;
    import org.eclipse.swt.graphics.Color;
    import org.eclipse.swt.graphics.Font;
    import org.eclipse.swt.layout.GridData;
    import org.eclipse.swt.layout.GridLayout;
    import org.eclipse.swt.widgets.Composite;
    import org.eclipse.swt.widgets.Label;
    import org.eclipse.swt.widgets.Combo;
     
    import com.mysql.jdbc.Statement;
     
    public class FormView extends ViewPart {
     
    	public static final String View_ID = "com.application.ib.FormView";
     
    	private FormToolkit toolkit;
    	private ScrolledForm form;
     
    	private Combo comboDevise = null;
     
    	protected CoursChange coursChange;
     
    	private Statement st; 
     
    	private ResultSet resultSet;
     
    	public FormView() {
    		// TODO Auto-generated constructor stub
    	}
     
    	@Override
    	public void createPartControl(final Composite parent) {
     
    		  toolkit = new FormToolkit(getFormColors(parent.getDisplay()));
    		  form = toolkit.createScrolledForm(parent);
    		  //setté les caractèristiques du form
    		  form.setFont(new Font(null, "Arial",14,SWT.BOLD));
    		  form.setText("Devises : Cours de changes");
    		  toolkit.decorateFormHeading(form.getForm());
     
    		  GridLayout layout = new GridLayout();
    		  form.getBody().setLayout(layout);
    		  layout.numColumns = 2;
     
    		  GridData gd = new GridData();
    		  gd.horizontalSpan = 2;
    		  Label labelDevise = new Label(form.getBody(), SWT.NULL);
    		  labelDevise.setText("Devise:");
    		  gd = new GridData();
    		  gd.horizontalSpan = 2;
    		  createDevise();
    		  Label labelDate = new Label(form.getBody(), SWT.NULL);
    		  labelDate.setText("Date:");
     
    		  final Text textDate = new Text(form.getBody(), SWT.BORDER);
    		  SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    		  textDate.setText(dateFormat.format(new Date()));
     
    		  Label labelValue = new Label(form.getBody(), SWT.NULL);
    		  labelValue.setText("Valeur:");
    		  final Text textValue = new Text(form.getBody(), SWT.BORDER);
     
    		  Button bValider = new Button(form.getBody(), SWT.BUTTON1);
    		  bValider.setText("Valider");
     
    		  bValider.addSelectionListener(new SelectionListener() {
     
    		      public void widgetDefaultSelected(SelectionEvent event) {
    		    	  //labelDevise.setText("button clicked");
     
    		      }
    		      //événement onClick du bouton valider.
    		      @Override
    		      public void widgetSelected(SelectionEvent e) {
    				// TODO Auto-generated method stub
    		    	  try {
    					    Date dateDb = stringToDate(textDate.getText(),"dd/MM/yyyy HH:mm:ss");
    					    System.out.println("Date choisi : "+dateDb);
    						System.out.println("taux : "+textValue.getText());
    						coursChange = new CoursChange(comboDevise.getText(), dateDb, Double.parseDouble(textValue.getText()));
    				  } 
    				  catch (ParseException e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    				  }
     
    		    	  System.out.println("button clocked" + coursChange);
    		    	  ConnectBd formCon = new ConnectBd();
    		    	  String queryInsert = "insert into Ib_appli values('"+coursChange.getdevise()+"','"+coursChange.getDate()+"',"+coursChange.getTaux()+")";
    		    	  System.out.println("query :"+queryInsert );
    		    	  try {
    					formCon.getStatement().executeUpdate(queryInsert);
    				  } catch (SQLException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				}
    		    	  //insérer dans la BD
     
    		    	  //mettre à jour le tableau de TableView
     
    		      }
    		 });
     
    	}
     
    	@Override
    	public void setFocus() {
    		// TODO Auto-generated method stub
    		form.setFocus();
    	}
     
    	public FormColors getFormColors(final Display display){
     
    		final Color COLOR_START = new Color(null, 128, 128, 128);
    		final Color COLOR_END = new Color(null, 255, 255, 255);
     
    		final Color COLOR_HEADING = new Color(null, 102, 102, 102);
     
    		FormColors formColors = new FormColors(display);
     
    		//setté les couleurs du gradient
    		formColors.createColor(IFormColors.H_GRADIENT_START, COLOR_START.getRGB());
    		formColors.createColor(IFormColors.H_GRADIENT_END, COLOR_END.getRGB());
    		formColors.createColor(IFormColors.H_BOTTOM_KEYLINE1, COLOR_END.getRGB());
    		formColors.createColor(IFormColors.H_BOTTOM_KEYLINE2, COLOR_START.getRGB());
     
    		//setté la couleur du titre
    		formColors.createColor(IFormColors.TITLE, COLOR_HEADING.getRGB());
     
    		return formColors;
     
    	}
     
    	public static Date stringToDate(String sDate, String sFormat) throws ParseException {
    		SimpleDateFormat sdf = new SimpleDateFormat(sFormat);
            sdf.setLenient(false);
            System.out.println("Date: " + sdf.parse(sDate));
            return sdf.parse(sDate);
    	}
     
    	/**
             * This method initializes comboDevise  
             *
             */
    	private void createDevise() {
    		comboDevise = new Combo(form.getBody(), SWT.NONE);
    		comboDevise.add("Euros");
    		comboDevise.add("USD");
    		comboDevise.select(0);
    	}
     
    }
    Mon but est de récupérer lors de l'appui sur le bouton Valider, récupérer les champs du formulaire, et les enregistrer en BD.
    Ce qui me pose problème maintenant, c'est le champ date :p

    Merci

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ton code (qui n'est pas le meme que celui que tu as soumis je note au passage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date dateDb = stringToDate(textDate.getText(),"dd/MM/yyyy HH:mm:ss");
    attends aussi les heures, minutes et seconde. L'exception Unparseable date: "10/02/2010". montre clairement que ces heures / minutes / secondes ne sont pas présente dans la case en question.

  5. #5
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut
    Je les avais enlevé au début et remis ensuite, c'est pour ca qu'elles apparaissent dans monde .

    Maintenant je les ai bien enlevé, et voilà ce que j'ai dans ma console exactement .
    date de la base : 2010-02-09
    date de la base : 2010-02-08
    Date: Wed Feb 10 00:00:00 GMT 2010
    Date choisi : Wed Feb 10 00:00:00 GMT 2010
    taux : 5.8
    button clockedcom.application.ib.CoursChange@79801c
    query :insert into Ib_appli values('Euros','Wed Feb 10 00:00:00 GMT 2010',5.8)
    com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: 'Wed Feb 10 00:00:00 GMT 2010' for column 'Date' at row 1
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3561)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3495)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2687)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1647)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1566)
    at com.application.ib.FormView$1.widgetSelected(FormView.java:110)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3880)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3473)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at com.application.ib.Application.start(Application.java:20)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1287)

    Merci bcp pour tes réponses et ton aide

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut
    Ne fais pas attention au 2 premieres traces :
    date de la base : 2010-02-09
    date de la base : 2010-02-08
    elles viennent d'une autre view.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Fonction de date pour insertion dans base MySQL
    Par jubourbon dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/06/2010, 16h27
  2. Cast d'un string en date pour MySQL 4.0.21
    Par nander dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/06/2010, 17h05
  3. [MySQL] Update / Insert sur MySQL
    Par Cheeper dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 03/07/2007, 09h06
  4. créer une interface utilisateur console pour requetes sur mysql
    Par begonia dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/03/2007, 15h16
  5. Réponses: 9
    Dernier message: 30/06/2004, 23h19

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