실습(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 |
---|