2011-10-05 5 views
2

데이터베이스 응용 프로그램을 & PostgreSQL으로 프로그래밍하려고합니다. 날짜 데이터 형식의 일부 행이 있습니다. 그러나 나는이 코드를 사용하여 데이터베이스에 어떤 항목을 추가하지 못할 :Java로 PostgreSQL에 날짜 값 입력

Date aDate = null; 
aDate.setYear(1990); 
aDate.setDate(01); 
aDate.setMonth(05); 

preparedStatement prep = connection.prepareStatement("insert 
into exampletable values (?,?);"); 
prep.setDate(1, (java.sql.Date) aDate); 
prep.setDate(2, (java.sql.Date) aDate); 

어떻게 자바에서 쿼리와 PostgreSQL의 행에 날짜를 추가 할 수 있습니까?

답변

5

그것은이 유일한 문제가 있는지 여부를 분명 아니지만,이 코드는 당신이 원하는 거의 확실되지 않습니다 :

Date aDate = null; 
aDate.setYear(1990); 
aDate.setDate(01); 
aDate.setMonth(05); 
  • 그것은 NullPointerException 발생합니다 당신은 역 참조 null
  • 에 노력하고 있기 때문에
  • 그러면 연도를 3890AD로 설정하려고합니다 (java.util.Date은 1900 년 기준)
  • 그러면 월을 6 월으로 설정합니다. 당신은 당신이 5 월 달 설정 있다고 생각하면, 다시 생각한다 - Date 당신이 사용되지 않습니다 사용하고
  • 모든 방법 개월 동안 공 기반 - 그런 다음있어 당신
  • 에 대한 큰 경고 빛을 인상해야한다고 java.sql.Date-aDate 캐스팅하려고하지만 제안 java.sql.Date

은 흔적도 없다 :

  • 가 어느을 사용 당신이 값
  • 을 설정하기 전에 훨씬 더 나은 날짜/시간 API로 73,210, 또는
  • java.util.Calendar 아마 나중에 새로운 java.sql.Date을 만들 실제로 인스턴스를 생성해야합니다. 예를 들어

:

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.YEAR, 1990); 
calendar.set(Calendar.DAY_OF_MONTH, 1); 
calendar.set(Calendar.MONTH, 4); // Assuming you wanted May 1st 

java.sql.Date date = new java.sql.Date(calendar.getTime().getTime()); 

// Ideally specify the columns here as well... 
PreparedStatement prep = connection.prepareStatement(
    "insert into exampletable values (?,?)"); 
prep.setDate(1, date); 
prep.setDate(2, date); 
+0

@RafaelWerlang : 귀하의 편집 제안이 올바르지 않습니다. 'Calendar.getTime()'은 java.util.Date를 반환합니다; 'java.util.Date.getTime()'은'long'을 반환합니다. 'java.sql.Date (long)'생성자가 있습니다 만, java.sql.Date (java.util.Date) 생성자는 없습니다. –