티스토리 뷰

 

 

- 오늘의 할 일 -

 

 

  • Usercreate - 신규 등록 페이지 -> 중복 Id,pw 예외 처리 
  • Usercreate - 신규 등록 페이지 -> 로그인을 성공하면 현재 창 닫게 하기
  • CustomerSelect - 회원 조회 페이지 -> 고객 DB 테이블 보여지게 하기 
  • UserPurchase - 사용자의 구매페이지 -> Userpage에서 특정 상품을 클릭하면 가져오기(리스트담기 ㄴㄴ)      purchase 메서드 클릭하면 product DB 에 보내주기(update) , purchase DB에 고객id, 상품과 수량이 담겨야함 
  • adminpage - 관리자 페이지 -> 수정,검색,삭제 기능 수정

 

신규 등록 페이지 

 

아이디 중복

 

이미 존재하는 abc 라는 아이디를 이용해서 신규 등록할 예정

 

 

중복된 아이디가 존재합니다. 로 수정해야할듯

 

하나 더 해보면 

 

 

 

이미 존재하는 kimm 이라는 아이디를 사용했을 때

중복된 아이디가 존재한다고 나오게 하기

 

코드 살펴보기 

 

JButton btnNewInsert = new JButton("등록");
		btnNewInsert.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// 아이디, 비밀번호 받아와서 중복로그인 확인
				String id = textFieldId.getText();
		        String pw = textFieldPw.getText();
		
				// 로그인 진행 
				insertUser(id,pw);
				
			}
		});

 

로그인 진행하는 메소드 안에 

중복을 검사하는 메소드 (sessionToken)을 넣을 거임 

 

private boolean sessionToken(String id, String pw) {
		// DB에서 고객 정보 가져오기
		ArrayList<CustomerVO> list = OracleCustomerOuery.getAllCustomers();
		
		// DB에서 아이디,비밀번호 비교해서 둘 중 하나라도 중복이 나오면 경고 문구 나가게 하기
		for(CustomerVO vo : list) {
			if(vo.getCustomerId().equals(id)) {
				return true; // 아이디, 비번이 일치하면 중복 로그인
			}
		}// 중복로그인이 아님
		return false;
	}//end ssesionToken()

 

 

private void insertUser(String id,String pw) {
		int result = 0;
		Connection conn = null;
		PreparedStatement pstmt = null;
		// PreparedStatement : 매개변수를 갖고 있는 SQL 문장을 활용하기 위한 클래스
		//						Statement와 상속관계
		try {
			// 2. Oracle JDBC 드라이버를 메모리에 로드
			DriverManager.registerDriver(new OracleDriver());
			System.out.println("드라이버 로드 성공");
			
			// 3. DB와 Connection(연결)을 맺음
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			System.out.println("DB 연결 성공");
			
			// 4. Connection 객체를 사용하여 PreparedStatement 객체를 생성
			pstmt = conn.prepareStatement(CUST_INSERT);
			
			// 5. SQL 문장 완성 - SQL_INSERT 쿼리의 ?를 채워주는 코드
			pstmt.setString(1, textFieldId.getText());
			pstmt.setString(2, textFieldPw.getText());
			pstmt.setString(3, textFieldName.getText());
			pstmt.setString(4, textFieldContact.getText());
			
//			id = textFieldId.getText();
//			pw = textFieldPw.getText();
//			
			
			// 중복 아이디 또는 비밀번호를 확인하기
			if(sessionToken(id,pw)) {
				System.out.println("중복된 아이디가 존재합니다.");
				return; // 중복된 경우 삽입을 중단
			}
			
			// 6. SQL 문장 실행(DB 서버로 SQL 전송)
			result = pstmt.executeUpdate();
			
			// 7. DB 서버가 보낸 결과 확인/처리
			System.out.println(result + "행이 삽입됐습니다.");
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		//return result; // 0 : 실패, 1 : 성공
	}//end insertUser()

 

 

결과적으로 이거 한 줄 추가하는데 참..오래도 걸림ㅎ

 

 

 


 

 

회원 조회 페이지 -> 고객 DB 테이블 보여지게 하기

 

 

전체 조회를 누르면 아래처럼 고객 목록이 뜨도록 한다 

 

코드 살펴보기 

 

package Products;

import java.util.ArrayList;

public interface CustomerDAO {

	// 모든 고객 정보 가져오기
	public abstract ArrayList<CustomerVO> getAllCustomers();
	
}//end Customer

 

 

package Products;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

public class CustomerDAOImple implements CustomerDAO , OracleCustomerOuery{


	// 싱글톤 디자인 패턴 적용
	   // 1. private static 자기 자신 타입의 멤버 변수
	   private static CustomerDAOImple instance = null;
	   
	   // 2. private 생성자
	   private CustomerDAOImple() {}
	   
	   // 3. public static 메소드 - 인스턴스를 리턴하는 메소드 구현
	   public static CustomerDAOImple getInstance() {
	      if(instance == null) {
	         instance = new CustomerDAOImple();
	      }
	      return instance;
	   }
	
	   private ArrayList<CustomerVO> list = new ArrayList<>(); // 연락처 정보를 저장할 배열
		
	   
	// DB에서 모든 고객 정보를 가져오는 메서드   
	@Override
	public ArrayList<CustomerVO> getAllCustomers() {
		 ArrayList<CustomerVO> list = new ArrayList<>();

	        try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
	             PreparedStatement pstmt = conn.prepareStatement(CUST_SELECT);
	             ResultSet rs = pstmt.executeQuery()) {

	            while (rs.next()) {
	                CustomerVO customer = new CustomerVO();
	                customer.setCustomerId(rs.getString(COL_CUSTOMER_ID));
	                customer.setPassword(rs.getString(COL_PASSWORD));
	                customer.setCustomerName(rs.getString(COL_CUSTOMER_NAME));
	                customer.setContact(rs.getString(COL_CONTACT));
	                list.add(customer);
	            }

	        } catch (Exception e) {
	            e.printStackTrace();
	        }

	        return list;
	}//end getAllCustomers

}//end CustomerDAOImple

 

 

ㅎㅎ 자주 쓰길래 CustomerDAO 랑 CustomerImple을 만들어버림

 

 

CustomerSelect 프레임으로 가서 

 

 

 

메소드 생성 

 

빨간색으로 칠한 부분만 달라짐

확실히 코드 길이가 확 줄어서 보기는 편한듯 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함