2010-04-29 3 views
2

J'utilise un datepicker jquery alors je l'ai lu dans mon servlet comme ça:insérer une date dans la base de données MySQL

Chaîne dateimput = request.getParameter ("DatePicker"); // 1 alors comme Parse que:

System.out.println("datepicker:" +dateimput); 
    DateFormat df = new SimpleDateFormat("MM/dd/yyyy");    
    java.util.Date dt = null; 
    try 
    { 
     dt = df.parse(dateimput); 
     System.out.println("date imput parssé1 est:" +dt); 
     System.out.println("date imput parsée2 est:" +df.format(dt)); 

    } catch (ParseException e) 
    { 
     e.printStackTrace(); 
    } 

et insérer la requête comme:

String query = "Insert into dailytimesheet(trackingDate,activity,projectCode) values ("+df.format(dt)+", \""+activity+"\" ,\""+projet+"\")"; 

passer avec succès jusqu'à ce moment, mais si je vérifie l'enregistrement inséré j'ai trouvé la date: 01/01/0001 00:00:00

J'ai essayé de résoudre le problème, mais c'est toujours un problème pour moi.

+0

À quoi ressemble "requête" avant d'envoyer/de s'appliquer dans mysql? Montrez-nous ce que vous insérez – basszero

+0

datepicker: 30/04/2010 date imput parssé1 est: Ven Avr 30 00:00:00 CEST 2010 date imput parsée2 est: 04/30/2010 – kawtousse

+1

Sauf si vous souhaitez que les injections SQL se produisent , on devrait utiliser 'PreparedStatement' pour placer les valeurs dans une instruction SQL plutôt que d'utiliser la concaténation de chaîne. – coobird

Répondre

2

Vous devez passer la date dans le format suivant: "AAAA-MM-dd"

+0

@kawtousse mais c'est une réponse à ta question noob et vaut au moins la peine d'être vaillante –

+0

Et oui, je suis totalement d'accord avec Guillaume que tu devrais UTILISER PreparedStatements pour des raisons de sécurité et de lisibilité! – Hinek

4

Utilisez PreparedStatements, ils ont une méthode setDate (...).

Sérieusement, veuillez utiliser PreparedStatements! en particulier dans un contexte webapp. Vous serez confronté SQL injections sinon

Questions connexes