2014-11-21 2 views
0

회원, 도서, 사용자 및 차용에 관한 데이터를 기록하는 Java 프로젝트를 만들고 있습니다. 클래스의 새 객체를 만들면 시스템 빌리기가 자동으로 IssueDate에 기록됩니다. 반환되는 책의 레코드를 만들고 SQL QUERY를 업데이트하고 ReturnDate.The 쿼리를 기록하려고 할 때 문제가 발생하지만 해당 필드의 DB에서 항상 ReturnDate로 30/12/1899를 얻습니다. SQL 쿼리는 다음과 같이 진행됩니다Access DB에 날짜 삽입 - 0 일자

UPDATE Booking SET Returned = 1, ReturnDate = "+ sdf.format(getReturnDate()) +" WHERE BookingID =" + getBookingID()  

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
setReturnDate(new Date());  

내가 수동으로 입력 할 때 그 형식 액세스가 인식하기 때문에 문자열 및 형식 일/월/년으로 포맷하기로 결정하고 다른 모든 쿼리를했다 (같은 새로운 Booking 및 IssueDate 생성) 실제 날짜를 입력합니다.

나는 이미 java.sql.Date 대신 미국 형식 (mm/dd/yyyy)으로 전환하고 날짜 문자열의 시작과 끝 부분에 # (해시 표시)를 사용하고 아무 것도 작동하지 않았다. . 다른 아이디어가 있습니까?

+0

사용하여 생각 해보자' PreparedStatement'를 참조하십시오. 자세한 내용은 [Prepared Statements 사용] (http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)을 참조하십시오. – MadProgrammer

+0

형식이 지정된 텍스트를 인용하거나 이스케이프해야합니까? 사실, 필요한 열에'PreparedStatement'와'setDate'를 사용하고 JDBC 드라이버가 처리하도록하십시오 – MadProgrammer

+0

@MadProgrammer 고마워, 그 것이었다 :) – banana

답변

0

PreparedStatementsetDate를 사용, 자세한 내용

대신 쿼리의 "텍스트"를 설정

에 대한 Using Prepared Statements를 참조 대신 PreparedStatement 사용을 고려하고하자 JDBC 드라이버 작업을 그것을 밖으로