본문 바로가기

웹 개발/JDBC

[Web_JDBC] 01

실습(JDBC)

※ TBL_USER 테이블 참고

 

1. UserVO.java

package vo;

public class UserVO {

	// 변수 선언
	private int userNumber; 
	private String userId;
	private String userPw;
	private String userName;
	private int userAge;
	private String userPhoneNumber;
	private int status;
	
	// 기본 생성자
	public UserVO() {;}

	// getter, setter
	public int getUserNumber() {
		return userNumber;
	}

	public void setUserNumber(int userNumber) {
		this.userNumber = userNumber;
	}

	public String getUserId() {
		return userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}

	public String getUserPw() {
		return userPw;
	}

	public void setUserPw(String userPw) {
		this.userPw = userPw;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public int getUserAge() {
		return userAge;
	}

	public void setUserAge(int userAge) {
		this.userAge = userAge;
	}

	public String getUserPhoneNumber() {
		return userPhoneNumber;
	}

	public void setUserPhoneNumber(String userPhoneNumber) {
		this.userPhoneNumber = userPhoneNumber;
	}

	public int getStatus() {
		return status;
	}

	public void setStatus(int status) {
		this.status = status;
	}
	
}

 

 

 

2. DBConnection.java

package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection { 
	public static Connection getConnection() { 
		
		Connection conn = null;
		
		// 연결에 필요한 정보
		String user = "hr";
		String password = "hr";
		String url = "jdbc:oracle:thin:@localhost:1521:XE";
		
		try {
			// 드라이버를 메모리에 할당
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			// 연결 정보를 전달하여 연결된 객체를 가져온다.
			conn = DriverManager.getConnection(url, user, password);
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
		
	}
}

 

 

 

3. UserDAO.java

- 필요한 변수 선언

// 연결 객체
Connection conn;

// SQL 쿼리문을 실행 해주는 객체
PreparedStatement pstm;

// 결과 테이블에 대한 정보를 가져올 수 있도록 도와주는 객체
ResultSet rs;

 

 

- 아이디 중복검사

public boolean checkId(String userId) {
	// 실행할 SQL문 작성
	String query = "SELECT COUNT(USER_NUMBER) FROM TBL_USER WHERE USER_ID = ?";
	boolean check = false;
	
	try {
		// 연결 객체 가져오기
		conn = DBConnection.getConnection();
		
		// 연결 객체를 통해 SQL문을 담아줄 prepareStatement() 사용
		pstm = conn.prepareStatement(query);
		
		// SQL에 작성된 ?에 넣어줄 값을 설정
		pstm.setString(1, userId);
		
		// SQL 실행, 결과를 rs객체에 담아주기
		rs = pstm.executeQuery();
			// 행 가져오기
		rs.next();
			
		// 첫번째 열을 가져온 뒤 1일 경우 이미 있는 아이디로 판단(true)
		check = rs.getInt(1) == 1;
		
	} catch (SQLException e) {
		e.printStackTrace();
		
	} finally {  // 오류 상관없이 실행된다.
		
		// 열었던 순서의 반대 순서로 닫아준다.
		try {
			if(rs != null) {
				rs.close();
			}
			if(pstm != null) {
				pstm.close();
			}
			if(conn != null) {
				conn.close();
			}
		} catch (SQLException e) {
			// 닫으면서 예외가 발생하면 반드시 프로그램을 강제 종료하여 메모리를 지켜준다
			// throw : 예외 발생
			throw new RuntimeException(e);
		}
	}
    
	return check;
}

 

 

- 회원가입

// SQL문 실행 시 SELECT가 아니라면 executeUpdate()를 사용한다.
public void join(UserVO userVO) {
	String query = "INSERT INTO TBL_USER (USER_NUMBER, USER_ID, USER_PW, USER_NAME, USER_AGE, USER_PHONE_NUMBER)";
	query += " VALUES(SEQ_USER.NEXTVAL, ?, ?, ?, ?, ?)";
	
	try {
		conn = DBConnection.getConnection();
		pstm = conn.prepareStatement(query);
		pstm.setString(1, userVO.getUserId());
		pstm.setString(2, userVO.getUserPw());
		pstm.setString(3, userVO.getUserName());
		pstm.setInt(4, userVO.getUserAge());
		pstm.setString(5, userVO.getUserPhoneNumber());
		
		pstm.executeUpdate();
		
	} catch (SQLException e) {
		e.printStackTrace();
		
	} finally {
		try {
			if(pstm != null) {
				pstm.close();
			}
			if(conn != null) {
				conn.close();
			}
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
}

 

 

 

4. Test.java

- 아이디 중복 검사

package test;

import dao.UserDAO;
import vo.UserVO;

public class Test {
	public static void main(String[] args) {
		
		UserDAO dao = new UserDAO();
		
		if(dao.checkId("hds12345")) {
			System.out.println("중복된 아이디");
		} else {
			System.out.println("사용 가능한 아이디");
		}
        
	}
}

 

 

- 회원가입

package test;

import dao.UserDAO;
import vo.UserVO;

public class Test {
	public static void main(String[] args) {
		
		UserDAO dao = new UserDAO();
		UserVO vo = new UserVO();
        
		vo.setUserId("hong5555");
		vo.setUserPw("1234");
		vo.setUserName("홍길동");
		vo.setUserAge(20);
		vo.setUserPhoneNumber("01055559999");
		dao.join(vo);

	}
}
 

 

 

 

 

'웹 개발 > JDBC' 카테고리의 다른 글

[Web_JDBC] 02  (0) 2022.04.12