집 >데이터 베이스 >MySQL 튜토리얼 >IllegalArgumentException을 피하기 위해 ReadyStatements에서 setDate()를 올바르게 사용하는 방법은 무엇입니까?
PreparedStatement의 setDate() 메소드: 오류 예방을 위한 모범 사례
Prepared 문으로 마이그레이션하면 코드 일관성이 향상되지만 setDate()
을 사용하면 때때로 IllegalArgumentException
오류가 발생할 수 있습니다. 이러한 문제를 방지하는 방법을 살펴보겠습니다.
다음 문제가 있는 코드 조각을 고려해보세요.
<code class="language-java">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); //Incorrect date initialization 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));</code>
IllegalArgumentException
은 부적절한 날짜 처리로 인해 발생했을 가능성이 높습니다. 일관되지 않은 형식의 문자열과 잘못된 날짜 초기화에는 date.valueOf()
을 사용하지 마세요.
java.sql.Date
및 java.sql.Timestamp
다양한 데이터베이스 열 유형에 setDate()
및 setTimestamp()
를 올바르게 사용하는 방법은 다음과 같습니다.
DATE 열의 경우:
ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));
("YYYY-MM-DD" 형식 확인)ps.setDate(2, new java.sql.Date(endDate.getTime()));
ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));
TIMESTAMP 또는 DATETIME 열의 경우:
ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));
("YYYY-MM-DD HH:mm:ss" 형식 확인)ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
이러한 모범 사례를 준수하고 적절한 데이터 유형과 형식을 사용하면 준비된 문 내에서 setDate()
및 setTimestamp()
를 안정적으로 사용하여 IllegalArgumentException
오류를 방지하고 데이터 무결성을 보장할 수 있습니다. 날짜/시간 문자열 형식을 항상 데이터베이스의 예상과 일치시키는 것을 잊지 마세요.
위 내용은 IllegalArgumentException을 피하기 위해 ReadyStatements에서 setDate()를 올바르게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!