USERDAO
- 실질적으로 db에서 회원정보를 불러오건가 db에 회원정보를 넣고자 할 때 사용
- 데이터를 가져오거나 넣는 역할을 하는 데이터 접근 객체
상황)
사용자에게 입력받은 값을 UserDAO.java내의 public int join(User user)함수에서 SQL에 넘김
join(user)함수를 실행했을 때의 날짜를 SQL에 저장하고 싶음
참고자료)
https://hayeon17kim.github.io/posts/devil-03/ [DEVIL: mysql의 datatime 타입과 java.util.Date 클래스]
=> java.sql.Date 시간 정보 저장X / java.sql.Time 날짜 정보 저장 X
https://www.delftstack.com/ko/howto/java/java-util-date-to-java-sql-date/ [java.util.date에서 Java의 java.sql.date로]
=> 1번 방법 사용
해결)
import java.time.LocalDate; // ?
import java.util.Date;
// 회원가입 기능
public int join(User user) {
String SQL = "INSERT INTO user (user_email, user_password, verify, join_date, nickname) VALUES (?,?,?,?,?)";
try {
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1,user.getUser_email());
pstmt.setString(2, user.getUser_password());
pstmt.setString(3, String.valueOf(user.getVerify()) );
// INSERT니까 java.util.Date를java.sql.Date로 변환, java.util.Date는 현재 순간, java.sql.Date는 JDBC가 이해할 수있는 SQL 형식의 날짜
Date date = new Date();
long timeInMilliSeconds = date.getTime();// 밀리 초 수 반환
java.sql.Date date1 = new java.sql.Date(timeInMilliSeconds); // java.sql.Date 객체 생성
//pstmt.setString(4, date1);
pstmt.setDate(4, date1);
pstmt.setString(5, user.getNickname());
return pstmt.executeUpdate(); // 해당 statement를 실행한 결과를 넣을 수 있도록 함
}catch(Exception e) {
e.printStackTrace();
}
return -1; // 데이터베이스 오류
}