Maison >base de données >tutoriel mysql >Comment utiliser correctement setDate() dans Java PreparedStatements pour éviter « IllegalArgumentException » ?

Comment utiliser correctement setDate() dans Java PreparedStatements pour éviter « IllegalArgumentException » ?

DDD
DDDoriginal
2025-01-18 22:27:11449parcourir

How to Correctly Use setDate() in Java PreparedStatements to Avoid `IllegalArgumentException`?

Utilisez la méthode setDate() dans PreparedStatement

Pour améliorer la standardisation du code, vous devez remplacer les variables SQL codées en dur par des instructions préparées et les lier. Cependant, vous rencontrez un problème lors de l'utilisation de la méthode setDate().

Code d'origine

<code class="language-java">String vDateMDYSQL = vDateMDY;
java.sql.Date date = new java.sql.Date(0000-00-00);
...
prs.setDate(2, date.valueOf(vDateMDYSQL));</code>

Erreur rencontrée

Lors de l'exécution de l'instruction SQL, l'erreur suivante s'est produite :

<code>java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Date.java:138)</code>

Alternatives

Le problème est que la variable de date est incorrectement initialisée en utilisant 0000-00-00 comme valeur par défaut. Pour résoudre ce problème, envisagez les alternatives suivantes lorsque vous traitez des dates :

java.sql.Date

Pour les tables avec type de colonne DATE :

  • Utiliser la chaîne :

    <code class="language-java">  ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));</code>
  • Utilisez java.util.Date :

    <code class="language-java">  ps.setDate(2, new java.sql.Date(endDate.getTime()));</code>
  • Obtenir la date actuelle :

    <code class="language-java">  ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));</code>

java.sql.Timestamp

Pour les tables avec des types de colonnes TIMESTAMP ou DATETIME :

  • Utiliser la chaîne :

    <code class="language-java">  ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));</code>
  • Utilisez java.util.Date :

    <code class="language-java">  ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));</code>
  • Obtenir l'horodatage actuel :

    <code class="language-java">  ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));</code>

Utilisez l'une des méthodes ci-dessus pour définir correctement la date dans la déclaration préparée, évitant ainsi l'erreur que vous avez rencontrée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn