package user;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
//데이터베이스 접근의 약자
public class UserDAO {
private Connection conn; //데이터베이스에 접근하게 해주는 하나의 객체
private PreparedStatement pstmt;
private ResultSet rs; //어떠한 정보를 담을 수 있는 하나 객체
//이 부분이 실제로 sql에 접속하게 해주는 부분
public UserDAO(){
try {
//~/database",~ 를 ~/database?useSSL=false",~
String dbURL = "jdbc:mysql://localhost:3306/BBS? &serverTimezone=UTC"; //신 버전 이라서 serTimezone=UTC 붙혀줘야댐
//&serverTimezone=UTC 이걸로 해결함
String dbID = "root";
String dbPassword ="49265771";
Class.forName("com.mysql.cj.jdbc.Driver");
//com.mysql.cj.jdbc.Driver mysql8버전 부터는 이거 사용해야됨
//com.mysql.jdbc.Driver
conn = DriverManager.getConnection(dbURL, dbID, dbPassword); //주소 아이디 비번을 통해서 접속한다
}catch(Exception e) {
e.printStackTrace();
}
}
//로그인기능
public int login(String userID,String userPassword) {
String SQL = "SELECT userPassword FROM USER WHERE userID =?";
try {
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, userID);
rs = pstmt.executeQuery();
//결과가 존재한다면 밑에 if부분 실행
if (rs.next()) {
if(rs.getString(1).equals(userPassword))
return 1; //로그인 성공
else
return 0; //비밀번호 불일치
}
return -1; //아이디가 없다
}catch (Exception e) {
e.printStackTrace();
}
return -2; //데이터베이스 오류를 의미
}
//회원가입 기능
public int join(User user) {
String SQL = "INSERT INTO USER VALUES (?, ?, ?, ?, ?)";
try {
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, user.getUserID());
pstmt.setString(2, user.getUserPassword());
pstmt.setString(3, user.getUserName());
pstmt.setString(4, user.getUserGender());
pstmt.setString(5, user.getUserEmail());
return pstmt.executeUpdate(); //실행된 값을 저장한다
}catch (Exception e) {
e.printStackTrace();
}
finally {
try {if(conn != null) {conn.close();}} catch (Exception ex) {ex.printStackTrace();}
try {if(rs != null) {rs.close();}} catch (Exception ex) {ex.printStackTrace();}
try {if(pstmt != null){pstmt.close();}}catch (Exception ex) {ex.printStackTrace();}
}
return -1; // 데이터베이스오류
}
}