코드베이스를 표준화하기 위해 우리는 하드코딩된 SQL 변수의 모든 인스턴스를 바인딩된 변수가 있는 준비된 명령문. 그러나 setDate() 메소드에 문제가 발생했습니다.
제공된 코드 조각은 다음과 같습니다.
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));
SQL 쿼리를 실행하면 다음 오류가 발생합니다. 발생:
java.lang.IllegalArgumentException at java.sql.Date.valueOf(Date.java:138) at com.cmsi.eValuate.TAF.TAFModuleMain.CallTAF(TAFModuleMain.java:1211)
setDate() 메서드에는 유효한 날짜 값이 필요합니다. 이 경우 유효하지 않은 날짜인 new java.sql.Date(0000-00-00)로 설정했습니다.
이 문제를 해결하려면 다음 솔루션을 고려할 수 있습니다.
테이블 열에 DATE가 있는 경우 유형에 따라 다음 옵션을 사용할 수 있습니다.
java.lang.String: java.sql.Date.valueOf(java.lang.String)을 사용하여 구문 분석합니다. yyyy-[m]m-[d]d 형식의 날짜 문자열, 예:
ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));
java.util.Date: 새로운 java.sql.Date(endDate.getTime()을 사용하여 java.util.Date 객체를 변환합니다. ), 예:
ps.setDate(2, new java.sql.Date(endDate.getTime()));
테이블 열에 TIMESTAMP 또는 DATETIME 유형이 있는 경우 다음 옵션은 다음과 같습니다. 사용 가능:
java.lang.String: java.sql.Timestamp.valueOf(java.lang.String)을 사용하여 yyyy 형식의 날짜 문자열을 구문 분석합니다. -[m]m-[d]d hh:mm:ss[.f…], 예:
ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));
java.util.Date: 새로운 java.sql.Timestamp(endDate.getTime()를 사용하여 java.util.Date 객체를 변환합니다. ), 예:
ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
위 내용은 `java.lang.IllegalArgumentException`을 피하기 위해 ReadyStatements에서 setDate()를 올바르게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!