다연이네

[days06] 회원 가입 - ID 중복 체크 버튼 테스트 본문

JDBC

[days06] 회원 가입 - ID 중복 체크 버튼 테스트

 다연  2020. 11. 30. 18:13
반응형

1. 프로시저 생성

create or replace procedure up_emp_logon
(
    pempno in number             --id     in
    ,  pename in varchar2          --pwd    in
    ,  plogoncheck out number   -- 1,2,0    out
)
is
   vempno number(1) ;   --  0    1(아이디존재)
   vename emp.ename%type;
begin
   select count(*) into vempno
   from emp
   where empno = pempno;
   if  vempno = 0 then
        plogoncheck := 1; --아이디가 존재하지 않는 경우 (아이디 사용 가능)
   else
      select ename into vename
      from emp
      where empno = pempno;      
      if pename = vename then
         plogoncheck := 0; -- 로그인 성공
      else
         plogoncheck := 2; --비밀번호가 틀린 경우
      end if;      
   end if;
--exception
end;

2. 클래스 생성

package days06;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Scanner;

import com.util.DBConn;

public class Ex03 {

	public static void main(String[] args) {
		// 문제) 로그인
		//아이디 [empno]
		//비밀번호 [ename]
		//[로그인][회원가입]
		
		//프로시저 생성 up_emp_logon
		//매개변수  입력용 empno, ename 
		//			  출력용 0(로그인 성공) 1(아이디 존재하지 않음) 2(아이디는 존재하나 비번 맞지 않음)


		
		System.out.print("> 로그인 체크할 empno, ename input?");
	      Scanner scanner = new Scanner(System.in);
	      int empno = scanner.nextInt();
	      String ename = scanner.next();
	      
	      Connection con = null;
	      CallableStatement cstmt = null;
	      
	      String sql = "{call up_emp_logon(?,?, ?)}";
	      con = DBConn.getConnection();
	      
	      int logonCheck = 0;
	      try {
	         cstmt = con.prepareCall(sql);
	         //?
	         cstmt.setInt(1, empno); 
	         cstmt.setString(2, ename);
	         cstmt.registerOutParameter(3, oracle.jdbc.OracleTypes.INTEGER);
	         cstmt.executeQuery();
	         
	         logonCheck = (int) cstmt.getObject(3); 
	         
	         if(logonCheck ==1 ) {
	            System.out.println("아이디가 존재하지 않습니다");
	         }else if(logonCheck ==0) {
	            System.out.println("로그인 성공");
	         }else if(logonCheck ==2) {
		            System.out.println("비밀번호 잘못");
		         }
	      
	      } catch (SQLException e) {
	         e.printStackTrace();
	      }finally {
	         try {
	            cstmt.close();
	            DBConn.close();
	         } catch (SQLException e) {
	            e.printStackTrace();
	         }
	      }//finally
	      

	}//main

}

반응형
Comments