JAVA/개념정리

MVC패턴 - JDBC , CRUD

inderrom 2022. 11. 27. 19:40

MVC (Model, View, Controller)

Model ==> 데이터 및 데이터를 만들기 위한 작업
View ==> 사용자에게 데이터를 보여주는 작업
Controller ==> 사용자의 요청을 받아서 Model을 작성하고
작성된 Model을 View에 전달하는 작업을 진행한다.
-----------------------------------------------------------------------------------
- MVC 패턴의 비지니스 로직을 처리하는 클래스들...
1. VO, DTO ==> 데이터를 저장하는 역할만 하는 클래스
(VO => Value Object, DTO => Data Transfer Object)

2. DAO ==> SQL문을 DB서버에 보내서 결과를 얻어오는 역할을 수행하는 클래스
(DAO => Data Access Object)

3. Service ==> 작업을 수행하는 중간 관리자와 같은 역할을 수행하는 클래스
서비스는 일이 있으면 그 일에 필요한 DAO를 호출해서 일을 처리한 후
처리 결과를 Controller에게 전달한다.

4. Controller ==> 비지니스 로직이 시작되는 곳으로 사용자의 요청이 오면
그 요청에 맞는 Service에게 일을 시키고 Sercvice가 보내온 처리결과를
View에 보내서 화면에 반영시키는 일을 수행한다.

 

 

 

 

1. model 1을 이용한 게시판 crud

 

 

* controller , dao, service, vo 생성

 

 

1) vo

 

package kr.or.ddit.mvc.vo;

/*
	DB테이블에 있는 컬럼을 기준으로 데이터를 객체화 할 클래스
	DB 테이블의 '컬럼명'이 이 클래스의 '멤버변수'가 된다.
	DB 테이블의 컬럼과 클래스의 멤버변수를 매핑하는 역할을 수행한다.
  	
  	오라클에서 컬럼명이 대문자여도 자바에서 소문자로 써도 됨
 */

public class MemberVO {
	private String mem_id; 
	private String mem_pass; 
	private String mem_name; 
	private String mem_tel; 
	private String mem_addr;
	
	// VO클래스에서 별도의 생성자를 만들 때에는 기본생성자도 반드시 같이 만들어 준다.
	// (아무일 안해도 기본생성자는 필수임)

	// getter, setter
	public String getMem_id() {
		return mem_id;
	}

	public void setMem_id(String mem_id) {
		this.mem_id = mem_id;
	}

	public String getMem_pass() {
		return mem_pass;
	}

	public void setMem_pass(String mem_pass) {
		this.mem_pass = mem_pass;
	}

	public String getMem_name() {
		return mem_name;
	}

	public void setMem_name(String mem_name) {
		this.mem_name = mem_name;
	}

	public String getMem_tel() {
		return mem_tel;
	}

	public void setMem_tel(String mem_tel) {
		this.mem_tel = mem_tel;
	}

	public String getMem_addr() {
		return mem_addr;
	}

	public void setMem_addr(String mem_addr) {
		this.mem_addr = mem_addr;
	}
	@Override
	public String toString() {
		return "MemberVO [mem_id=" + mem_id + ", mem_pass=" + mem_pass + ", mem_name=" + mem_name + ", mem_tel="
				+ mem_tel + ", mem_addr=" + mem_addr + "]";
	}
}

 

2) Dao

package kr.or.ddit.mvc.dao;

import java.util.List;
import java.util.Map;

import kr.or.ddit.mvc.vo.MemberVO;

/**
 * 실제 DB와 연결해서 SQL문을 수행하여 결과를 작성해서
 * Service에게 전달하는 DAO의 interface<br><br>
 * 
 * 메서드 하나가 DB와 관련된 작업 1개를 수행하도록 작성한다.
 * 
 * MVC패턴에서는 데이터를 여러개로 보내는 것을 추천하지 않음!!!
 * 
 * 
 *
 */


public interface IMemberDao {
	/**
	 * MemberVO객체에 담겨진 자료를 DB에 insert하는 메서드
	 * 
	 * @param memVo DB에 insert할 자료가 저장된 MemberVO객체
	 * @return 작업 성공 : 1, 작업 실패 : 0
	 */
	public int insertMember(MemberVO memVo);
	
	/**
	 * 회원ID를 인수값으로 받아서 해당 회원 정보를 삭제하는 메서드
	 * 
	 * @param memId 삭제할 회원ID
	 * @return 작업 성공 : 1, 작업 실패 : 0
	 */
	public int deleteMember(String memId);
	
	/**
	 * MemberVO자료를 이용하여 DB에 update하는 메서드
	 * 
	 * @param memVo update할 회원 정보가 저장된 MemberVO객체
	 * @return 작업 성공: 1, 작업 실패 : 0
	 */
	
	public int updateMember(MemberVO memVo);
	
	/**
	 * DB의 전체 회원 정보를 가져와서 List에 담아서 반환하는 메서드
	 * @return MemberVO객체가 저장된 List객체
	 */
	
	public List<MemberVO> getAllMember();
	
	/**
	 * 회원ID를 인수값으로 받아서 해당 회원ID의 개수를 반환하는 메서드
	 * @param memId 검색할 회원ID
	 * @return 검색된 회원ID의 개수
	 */
	public int getMemberCount(String memId);
	
	/**
	 * Map의 정보를 이용하여 회원 정보 중 원하는 컬럼을 수정하는 메서드
	 *	key값 정보 : 수정할컬럼명 : field, 수정할데이터: data, 회원ID: memid
	 * 
	 * @param paramMap 수정할 컬럼명, 수정할 데이터, 수정할 회원ID가 저장된 Map객체
	 * @return 작업 성공 : 1, 작업 실패 : 0
	 */
	
	public int updateMember2(Map<String,String> paramMap);
}
package kr.or.ddit.mvc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import kr.or.ddit.mvc.vo.MemberVO;
import kr.or.ddit.util.DBUtil;
import kr.or.ddit.util.DBUtil3;

public class MemberDaoImpl implements IMemberDao {
	
	//싱글톤 만들기 과정 1 ~ 3
	
	// 1번
	private static MemberDaoImpl dao;
	
	// 2번
	private MemberDaoImpl() { }
	
	// 3번 
	public static MemberDaoImpl getInstance() {
		if(dao == null) dao = new MemberDaoImpl();
		
		return dao;
	}
	
	@Override
	public int insertMember(MemberVO memVo) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		
		int cnt = 0; // 반환값이 저장될 변수 선언
		
		try {
			conn = DBUtil3.getConnection();
			String sql = "insert into mymember (mem_id, mem_pass, mem_name, mem_tel, mem_addr)"
					+ "values(?, ?, ?, ?, ?)";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memVo.getMem_id());
			pstmt.setString(2, memVo.getMem_pass());
			pstmt.setString(3, memVo.getMem_name());
			pstmt.setString(4, memVo.getMem_tel());
			pstmt.setString(5, memVo.getMem_addr());
			
			cnt = pstmt.executeUpdate();
			
			
		} catch (SQLException e) {
			cnt = 0;
			e.printStackTrace();
		} finally {
			if(pstmt!=null) try { pstmt.close();} catch(SQLException e) {}
			if(conn!=null) try { conn.close();} catch(SQLException e) {}
		}
		
		
		return cnt;
	}

	@Override
	public int deleteMember(String memId) {
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		int cnt = 0;
		
		try {
			
			conn = DBUtil3.getConnection();
			
			String sql = "delete from mymember where mem_id =?";
			
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1,  memId);
			
			cnt = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			cnt = 0;
			e.printStackTrace();
		} finally {
			if(pstmt!=null) try {pstmt.close();} catch(SQLException e) {}
			if(conn!=null) try {conn.close();} catch(SQLException e) {}
		}
		
		
		return cnt;
	}

	@Override
	public int updateMember(MemberVO memVo) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		int cnt = 0;
		
		try {
			conn = DBUtil3.getConnection();
			String sql = "update mymember set mem_pass =?, mem_name =?,"
					+ "mem_tel =?, mem_addr =?"
					+ "where mem_id =?";
			
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memVo.getMem_pass());
			pstmt.setString(2, memVo.getMem_name());
			pstmt.setString(3, memVo.getMem_tel());
			pstmt.setString(4, memVo.getMem_addr());
			pstmt.setString(5, memVo.getMem_id());
			
			cnt = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			cnt = 0;
			e.printStackTrace();
		} finally {
			if(pstmt!=null) try {pstmt.close();} catch(SQLException e) {}
			if(conn!=null) try {conn.close();} catch(SQLException e) {}
		}
		
		return cnt;
	}

	@Override
	public List<MemberVO> getAllMember() {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		List<MemberVO> memList = null; // 반환값이 저장될 변수
		
		try {
			conn = DBUtil3.getConnection();
			String sql = "select * from mymember";
			pstmt = conn.prepareStatement(sql);
			
			rs= pstmt.executeQuery();
			
			memList = new ArrayList<MemberVO>();  // List객체 생성
			
			while(rs.next()) {
				MemberVO memVo = new MemberVO();  // 1개의 레코드를 저장할 VO객체 생성
				
				// DB의 컬럼값을 가져와 VO의 멤버변수에 저장한다.
				memVo.setMem_id(rs.getString("mem_id"));
				memVo.setMem_pass(rs.getString("mem_pass"));
				memVo.setMem_name(rs.getString("mem_name"));
				memVo.setMem_tel(rs.getString("mem_tel"));
				memVo.setMem_addr(rs.getString("mem_addr"));
				
				//VO객체를 List에 추가한다.
				memList.add(memVo);
			}
			
		} catch (SQLException e) {
			memList = null;
			e.printStackTrace();
		} finally {
			if(rs!=null) try {rs.close();} catch(SQLException e) {}
			if(pstmt!=null) try {pstmt.close();} catch(SQLException e) {}
			if(conn!=null) try {conn.close();} catch(SQLException e) {}
		}
		
		
		return memList;
	}

	@Override
	public int getMemberCount(String memId) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		int count = 0;
		
		try {
			conn = DBUtil3.getConnection();
			
			String sql = "select count(*) cnt from mymember where mem_id = ?";
			
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memId);
			
			rs = pstmt.executeQuery();
			
			if(rs.next()) {
				count = rs.getInt("cnt");
			}
		} catch (SQLException e) {
			count = 0;
			e.printStackTrace();
		}finally {
			if(rs!=null) try {rs.close();} catch(SQLException e) {}
			if(pstmt!=null) try {pstmt.close();} catch(SQLException e) {}
			if(conn!=null) try {conn.close();} catch(SQLException e) {}
		}
		
		return count;
	}

	@Override
	public int updateMember2(Map<String, String> paramMap) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		int cnt = 0;
		try {
			//key값 정보 : 수정할컬럼명 : field, 수정할데이터: data, 회원ID: memid
			conn = DBUtil3.getConnection();
			
			String sql = "update mymember set " + paramMap.get("field") + " = ? where mem_id = ?";
			
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, paramMap.get("data"));
			pstmt.setString(2, paramMap.get("memid"));
			
			 cnt = pstmt.executeUpdate();
		} catch (SQLException e) {
			cnt = 0;
			e.printStackTrace();
		} finally {
			if(pstmt!=null) try {pstmt.close();} catch(SQLException e) {}
			if(conn!=null) try {conn.close();} catch(SQLException e) {}
		}
		
		return cnt;
	}

}

 

 

3)service

 

package kr.or.ddit.mvc.service;

import java.util.List;
import java.util.Map;

import kr.or.ddit.mvc.vo.MemberVO;

/**
 * Service객체는 DAO에 작성된 메서드를 원하는 작업에 맞게 호출하여 실행하고
 * 그 결과를 받아서 Controller에게 전달하는 역할을 한다.
 * 보통은 DAO의 메서드 구조와 같게 만든다.
 */
public interface IMemberService {
	
	/**
	 * MemberVO객체에 담겨진 자료를 DB에 insert하는 메서드
	 * 
	 * @param memVo DB에 insert할 자료가 저장된 MemberVO객체
	 * @return 작업 성공 : 1, 작업 실패 : 0
	 */
	public int insertMember(MemberVO memVo);
	
	/**
	 * 회원ID를 인수값으로 받아서 해당 회원 정보를 삭제하는 메서드
	 * 
	 * @param memId 삭제할 회원ID
	 * @return 작업 성공 : 1, 작업 실패 : 0
	 */
	public int deleteMember(String memId);
	
	/**
	 * MemberVO자료를 이용하여 DB에 update하는 메서드
	 * 
	 * @param memVo update할 회원 정보가 저장된 MemberVO객체
	 * @return 작업 성공: 1, 작업 실패 : 0
	 */
	
	public int updateMember(MemberVO memVo);
	
	/**
	 * DB의 전체 회원 정보를 가져와서 List에 담아서 반환하는 메서드
	 * @return MemberVO객체가 저장된 List객체
	 */
	
	public List<MemberVO> getAllMember();
	
	/**
	 * 회원ID를 인수값으로 받아서 해당 회원ID의 개수를 반환하는 메서드
	 * @param memId 검색할 회원ID
	 * @return 검색된 회원ID의 개수
	 */
	public int getMemberCount(String memId);
	
	/**
	 * Map의 정보를 이용하여 회원 정보 중 원하는 컬럼을 수정하는 메서드
	 *	key값 정보 : 수정할컬럼명 : field, 수정할데이터: data, 회원ID: memid
	 * 
	 * 
	 * @param paramMap 수정할 컬럼명, 수정할 데이터, 수정할 회원ID가 저장된 Map객체
	 * @return 작업 성공 : 1, 작업 실패 : 0
	 */
	
	public int updateMember2(Map<String,String> paramMap);
}
package kr.or.ddit.mvc.service;

import java.util.List;
import java.util.Map;

import kr.or.ddit.mvc.dao.IMemberDao;
import kr.or.ddit.mvc.dao.MemberDaoImpl;
import kr.or.ddit.mvc.vo.MemberVO;

public class MemberServiceImpl implements IMemberService {
	// 1번
	
	private static MemberServiceImpl service;
	
	private IMemberDao dao;  //DAO객체 변수 선언
	
	// 생성자 ==> 번
//	public MemberServiceImpl() {
	private MemberServiceImpl() {
//		dao = new MemberDaoImpl();  //DAO객체 생성
		dao = MemberDaoImpl.getInstance(); // DAO객체 생성 (싱글톤 적용된거
	}
	
	//3번
	public static MemberServiceImpl getInstance() {
		if(service == null) service = new MemberServiceImpl();
		return service;
	}
	
	@Override
	public int insertMember(MemberVO memVo) {
		
		return dao.insertMember(memVo);
	}

	@Override
	public int deleteMember(String memId) {
		return dao.deleteMember(memId);
	}

	@Override
	public int updateMember(MemberVO memVo) {
		// TODO Auto-generated method stub
		return dao.updateMember(memVo);
	}

	@Override
	public List<MemberVO> getAllMember() {
		
		return dao.getAllMember();
	}

	@Override
	public int getMemberCount(String memId) {
		return dao.getMemberCount(memId);
	}

	@Override
	public int updateMember2(Map<String, String> paramMap) {
		
		return dao.updateMember2(paramMap);
	}
}

 

 

3) controller

 

package kr.or.ddit.mvc.controller;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

import kr.or.ddit.mvc.service.IMemberService;
import kr.or.ddit.mvc.service.MemberServiceImpl;
import kr.or.ddit.mvc.vo.MemberVO;
import kr.or.ddit.util.DBUtil3;

public class MemberController {
   private IMemberService service;   
   Scanner scan;
   
   // 생성자
   public MemberController() {
      service = MemberServiceImpl.getInstance();
      scan = new Scanner(System.in);
   }
   
   public static void main(String[] args) {
      new MemberController().startMember();
   }
   
   // 시작 메서드
      public void startMember() {
         System.out.println();
         System.out.println("******************************************");
         System.out.println("      회  원  관  리  프  로  그  램");
         System.out.println("******************************************");
         System.out.println();
         
         while(true) {
            int choice = displayMenu();
            switch(choice) {
               case 1 :             // 추가
                  insertMember(); break;
               case 2 :             // 삭제
                  deleteMember(); break;
               case 3 :             // 수정
                  updateMember(); break;
               case 4 :             // 전체 자료 출력
                  displayMember(); break;
               case 5 :             // 수정2
                  updateMember2(); break;
               case 0 :             // 작업 끝.
                  System.out.println("회원 관리 프로그램을 마칩니다...");
                  return;
               default :
                  System.out.println("작업 번호를 잘못 입력했습니다. 다시 입력하세요.");
                  System.out.println();
            }
         }
      }
      private void updateMember2() {
    	  System.out.println();
  		System.out.println("수정할 회원 정보를 입력하세요...");
  		System.out.print("회원ID >> ");
  		String memId = scan.next();
  		
  		int count = service.getMemberCount(memId);
  		if(count==0) {
  			System.out.println(memId + "은(는) 등록되지 않은 회원입니다.");
  			System.out.println("수정 작업을 마칩니다...");
  			return;
  		}
  		
  		// 수정할 항목을 선택하기
  		int num;						// 수정할 항목의 선택 번호
  		String updateField = null; 		// 수정할 컬럼명이 저장될 변수
  		String updateTitle = null;		// 입력할 때 출력할 제목이 저장될 변수
  		do {
  			System.out.println();
  			System.out.println("수정할 항목을 선택하세요...");
  			System.out.println("1.비밀번호   2.회원이름   3.전화번호   4.회원주소");
  			System.out.print("수정할 항목 선택 >> ");
  			num = scan.nextInt();
  			
  			switch (num) {
  			case 1: updateField = "mem_pass"; updateTitle="비밀번호"; break;
  			case 2: updateField = "mem_name"; updateTitle="회원이름"; break;
  			case 3: updateField = "mem_tel"; updateTitle="전화번호"; break;
  			case 4: updateField = "mem_addr"; updateTitle="회원주소"; break;
  			default : System.out.println("수정할 항목 번호를 잘못 입력했습니다.");
  			 		  System.out.println("다시 입력하세요...");
  			}
  			
  		}while(num<1 || num>4);
  		scan.nextLine(); // 입력 버퍼 비우기
  		System.out.println();
  		System.out.print("새로운" + updateTitle + " >> ");
  		String updateData = scan.nextLine();
  		
  		// 만들어진 데이터를 저장할 Map객체 생성
  		Map<String, String> pMap = new HashMap<String, String>();
  		
  		// 데이터를 Map에 추가
  		pMap.put("field", updateField);
  		pMap.put("data", updateData);
  		pMap.put("memid", memId);
  		
  		int cnt = service.updateMember2(pMap);
  		
  		if(cnt >0) {
  			System.out.println("수정 작업 성공 !!!");
  		}else {
  			System.out.println("수정 작업 실패 ~~~");
  		}
      }
            
    private void displayMember() {
       List<MemberVO> memList=service.getAllMember();
       
       System.out.println();
      System.out.println("----------------------------------------------------");
      System.out.println("    ID     비밀번호            이름           전화번호           주소");
      System.out.println("----------------------------------------------------");
      if(memList==null || memList.size()==0) {
         System.out.println("등록된 회원 정보가 하나도 없습니다...");
      }else {
         for(MemberVO mvo : memList) {
        	 String memId = mvo.getMem_id();
				String memPass = mvo.getMem_pass();
				String memName = mvo.getMem_name();
				String memTel = mvo.getMem_tel();
				String memAddr = mvo.getMem_addr();
			
				System.out.println("  " + memId + "    " + memPass + "    " + memName + "     " + memTel + "    " + memAddr );
			}
         }
      System.out.println("----------------------------------------------------");
      }
      
      
   


   private void updateMember() {
      System.out.println();
      System.out.println("수정할 회원 정보를 입력하세요...");
      System.out.print("회원 아이디 >> ");
      String memId=scan.next();
      
      int count=service.getMemberCount(memId);
      
      if(count==0) {
         System.out.println(memId+"은(는) 등록되지 않은 회원입니다.");
         System.out.println("수정 작업을 마칩니다....");
         return;
      }
      
      System.out.print("새로운 비밀번호 >> ");
      String newMemPass=scan.next();
      
      System.out.print("새로운 이름 >>");
      String newMemName=scan.next();
      
      System.out.print("새로운 전화번호 >> ");
      String newMemTel=scan.next();
      
      scan.nextLine();//버퍼 비우기
      System.out.print("새로운 회원주소 >>");
      String newMemAddr=scan.nextLine();
      
      // 수정할 데이터를 VO객체에 저장한다.
      MemberVO memVo=new MemberVO();
      memVo.setMem_id(memId);
      memVo.setMem_pass(newMemPass);
      memVo.setMem_name(newMemName);
      memVo.setMem_tel(newMemTel);
      memVo.setMem_addr(newMemAddr);
      
      int cnt=service.updateMember(memVo);
      
      if(cnt>0) {
         System.out.println("회원ID가 "+memId+"인 회원 정보 수정 성공!!");
      }else {
         System.out.println(memId+" 회원은 없는 회원이거나 수정에 실패했습니다~~~");
      }
   }

   private void deleteMember() {
      System.out.println();
      System.out.println("삭제할 회원 정보를 입력하세요....");
      System.out.print("삭제할 회원ID >> ");
      String memId=scan.next();
      
      int cnt=service.deleteMember(memId);
      
      if(cnt>0) {
         System.out.println("회원ID가 "+memId+"인 회원 정보 삭제 성공!!");
      }else {
         System.out.println(memId+" 회원은 없는 회원이거나 삭제에 실패했습니다~~~");
      }
   }

   private void insertMember() {
       System.out.println();
        System.out.println("추가할 회원 정보를 입력하세요...");
        
        int count=0;       //회원ID의 개수가 저장될 변수
        String memId;   //회원ID가 저장될 변수
        do {
           System.out.print("회원ID >> ");
           memId=scan.next();
           count= service.getMemberCount(memId); //처리한 결과를 가져옴
           if(count>0) {
              System.out.println(memId+"은(는) 이미 등록된 ID입니다.");
              System.out.println("다른 회원ID를 입력하세요...");
           }
        }while(count>0);
        
        System.out.print("비밀번호 >> ");
        String memPass=scan.next();
        
        System.out.print("회원이름 >> ");
        String memName=scan.next();
        
        System.out.print("전화번호 >> ");
        String memTel=scan.next();
        
        scan.nextLine();   //입력 버퍼 비우기
        
        System.out.print("회원주소 >> ");
        String memAddr=scan.nextLine();
        
        // MemberVO객체에 입력한 데이터를 저장한다.
        MemberVO memVo=new MemberVO();
        memVo.setMem_id(memId);
        memVo.setMem_pass(memPass);
        memVo.setMem_name(memName);
        memVo.setMem_tel(memTel);
        memVo.setMem_addr(memAddr);
        
        int cnt=service.insertMember(memVo);
        
        if(cnt>0) {
           System.out.println(memId+" 회원 정보 추가 완료!!!");
        }else {
           System.out.println(memId+" 회원 정보 추가 실패!!!");
        }
      }
            
// 메뉴를 출력하고 입력한 작업 번호를 반환하는 메서드
      private int displayMenu() {
         System.out.println();
         System.out.println("== 작업 선택 ==");
         System.out.println(" 1. 자료 추가");
         System.out.println(" 2. 자료 삭제");
         System.out.println(" 3. 자료 수정");
         System.out.println(" 4. 전체 자료 출력");
         System.out.println(" 5. 자료 수정2");
         System.out.println(" 0. 작업 끝.");
         System.out.println("--------------------------");
         System.out.print(" 작업 번호 입력 >> ");
         return scan.nextInt();
      }
   
      public int getMemberCount(String memId) {
	      Connection conn = null;
	      PreparedStatement pstmt = null;
	      ResultSet rs = null;
	      
	      int count = 0; 
	      
	      try {
	         conn = DBUtil3.getConnection();
	         
	         String sql = "select count(*) cnt from mymember where mem_id = ? ";
	         
	         pstmt = conn.prepareStatement(sql);
	         pstmt.setString(1, memId);
	         
	         rs = pstmt.executeQuery();
	         
	         if(rs.next()) {
	            count = rs.getInt("cnt");
	         }
	         
	      } catch (SQLException e) {
	         count = 0;
	         e.printStackTrace();
	      } finally {
	         if(conn != null) try { conn.close(); } catch(SQLException e ) {}
	         if(pstmt != null) try { pstmt.close(); } catch(SQLException e ) {}
	         if(rs != null) try { rs.close(); } catch(SQLException e ) {}
	      }
	      
	      return count;
	   }
}