Afin de standardiser notre base de code, nous avons été chargés de faire la transition de toutes les instances de variables SQL codées en dur vers instructions préparées avec des variables liées. Cependant, nous avons rencontré un problème avec la méthode setDate().
L'extrait de code fourni est le suivant :
DateFormat dateFormatYMD = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); DateFormat dateFormatMDY = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); Date now = new Date(); String vDateYMD = dateFormatYMD.format(now); String vDateMDY = dateFormatMDY.format(now); String vDateMDYSQL = vDateMDY; java.sql.Date date = new java.sql.Date(0000-00-00); requestSQL = "INSERT INTO CREDIT_REQ_TITLE_ORDER (REQUEST_ID," + " ORDER_DT, FOLLOWUP_DT) " + "values(?,?,?,)"; prs = conn.prepareStatement(requestSQL); prs.setInt(1, new Integer(requestID)); prs.setDate(2, date.valueOf(vDateMDYSQL)); prs.setDate(3, date.valueOf(sqlFollowupDT));
Lors de l'exécution de la requête SQL, l'erreur suivante est rencontrée :
java.lang.IllegalArgumentException at java.sql.Date.valueOf(Date.java:138) at com.cmsi.eValuate.TAF.TAFModuleMain.CallTAF(TAFModuleMain.java:1211)
La La méthode setDate() nécessite une valeur de date valide. Dans ce cas, nous l'avons défini sur new java.sql.Date(0000-00-00), qui est une date invalide.
Pour résoudre ce problème, les solutions suivantes peuvent être envisagées :
Si la colonne du tableau a un type DATE, les options suivantes sont disponibles :
java.lang.String : utilisez java.sql.Date.valueOf(java.lang.String) pour analyser la chaîne de date au format aaaa-[m]m-[d]d, par exemple :
ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));
java.util.Date : convertissez l'objet java.util.Date en utilisant le nouveau java.sql.Date(endDate.getTime() ), par exemple :
ps.setDate(2, new java.sql.Date(endDate.getTime()));
Si la colonne du tableau a un type TIMESTAMP ou DATETIME, les options suivantes sont disponible :
java.lang.String : utilisez java.sql.Timestamp.valueOf(java.lang.String) pour analyser la chaîne de date au format aaaa -[m]m-[d]d hh:mm:ss[.f…], par exemple :
ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));
java.util.Date : convertissez l'objet java.util.Date en utilisant le nouveau java.sql.Timestamp(endDate.getTime() ), par exemple :
ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
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!