> 데이터 베이스 > MySQL 튜토리얼 > IllegalArgumentException을 피하기 위해 ReadyStatements에서 setDate()를 올바르게 사용하는 방법은 무엇입니까?

IllegalArgumentException을 피하기 위해 ReadyStatements에서 setDate()를 올바르게 사용하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-18 22:36:11
원래의
264명이 탐색했습니다.

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

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.Datejava.sql.Timestamp

을 사용한 올바른 접근 방식

다양한 데이터베이스 열 유형에 setDate()setTimestamp()를 올바르게 사용하는 방법은 다음과 같습니다.

DATE 열의 경우:

  • 문자열 사용: ps.setDate(2, java.sql.Date.valueOf("2013-09-04")); ("YYYY-MM-DD" 형식 확인)
  • java.util.Date 사용: 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" 형식 확인)
  • java.util.Date 사용: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿