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
Libérer: 2025-01-18 22:27:11
original
413 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
    Copier après la connexion
  • Utilisez java.util.Date :

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

    <code class="language-java">  ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));</code>
    Copier après la connexion

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>
    Copier après la connexion
  • Utilisez java.util.Date :

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

    <code class="language-java">  ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));</code>
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal