comment faire pour insérer un Horodatage dans la base de données?
J'obtiens cette erreur:
java.lang.IllegalArgumentException: format d'Horodatage doit être aaaa-mm-jj
hh:mm:ss[.fffffffff]
Voici mon code java:
<% int reg;
String sdate = request.getParameter("sdate");
//Timestamp ts=request.get
//out.println(sdate);
String text = "0000-00-00 00:00:00";
Timestamp ts = Timestamp.valueOf(text);
//Timestamp ts1=Timestamp.valueOf(sdate);
// Timestamp ts2=Timestamp.valueOf(edate);
try{
String s;
Format formatter;
Date date = new Date(sdate);
//out.println(date);
formatter = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
s = formatter.format(date);
out.println(s);
PreparedStatement ps=cn.prepareStatement("insert into c1 values(?)");
//ps.setString(1,ts);
ps.setTimestamp(1,ts);
int i=ps.executeUpdate();
if(i==1)
{
pw.println("record inserted");
}
else
{
pw.println("not iNSERTED");
}
//cn.close();
}
catch(Exception e)
{
out.println(e.toString());
}
%>
Des Suggestions?
- Bienvenue à AFIN de. Malheureusement, ce n'est pas la façon dont il fonctionne ici. Bien que vous puissiez obtenir une réponse, nous préférons que vous faites vos propres recherches, dites-nous ce que vous avez fait et expliquer ce que vous ne comprenez pas. Veuillez lire le FAQ et Comment Demander pour plus de détails. Les Questions de la forme "voici mon code, merci de le corriger" ont tendance à obtenir downvoted et/ou mis en attente.
- veuillez lire jim garrison commentaire. Je suis d'accord. Essayez de modifier votre question, de sorte que vous pouvez montrer à l'utilisation que vous avez tenté de trouver une solution vous-même. Pour l'instant juste pour vous accueillir, vous pouvez avoir un coup d'oeil à ma réponse ci-dessous. Il consiste à vous en utilisant le caractère de trait d'union à la place de la virgule lorsque vous écrivez le format de la date
- Vous n'avez pas de montrer l'exception de sperme ou d'identifier la ligne qui a obtenu l'erreur. Vous êtes maintenant de retour sur nous. Mais observer qu'une date d'0000-00-00 est pas valide, alors qu'avec votre SimpleDateFormatter vous utilisez
:
où vous devez utiliser-
. - Cette question semble être hors-sujet, car l'utilisateur a retenu l'essentiel de l'information.
Vous devez vous connecter pour publier un commentaire.
Shakti, vous devez vous adresser à l'erreur.
java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
et puis un coup d'oeil à la façon dont vous avez formaté votre date.
Vous aurez besoin de changer votre ligne ci-dessous
à:
Avis de la différence et de l'utilisation du tiret caractère de la date de la place de la virgule qui vous êtes en utilisant.
Mise à JOUR de 1
Ok. ainsi, après @sotirios commentaire, j'ai décidé de faire quelques recherches supplémentaires et je suis tombé sur ce post et appris quelque chose. Vous ne pouvez pas donner un 0000-00... date en raison de la configuration de MySQL [utilise "zéro dates" spécial réservé
La solution pure et simple est de changer la chaîne de date de
à atleast
Et si vous voulez vraiment envoyer 0000-00-... date de cordes je crois que la solution est de spécifier "zeroDateTimeBehavior=convertToNull" en tant que paramètre à votre connexion MySQL (que ce soit dans la source de données d'URL ou comme une propriété supplémentaire), par exemple:
jdbc:mysql://localhost/myDatabase?zeroDateTimeBehavior=convertToNull
Ce sera la cause de toutes ces valeurs à envoyer en tant que valeurs Null.
Timestamp.valueOf
.Ce
n'est pas une date valide. Il n'y a pas de mois ou de jours avec une valeur de
0
.La
Timestamp.valueOf(text)
ne sera pas en mesure de l'analyser.Au moins utiliser
j'utilise jdbc native de type timestamp: