본문 바로가기

카테고리 없음

[jsp/mysql]UserDAO.java에서 mysql에 date타입으로 날짜 저장하기

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; // 데이터베이스 오류
	}