티스토리 뷰

 

 

- 오늘의 할 일 - 

 

1. main 페이지는 어디에? 

- 관리자 상품등록페이지(adinpage)를 연락처 ver.0.6 이랑 비교해봤을때 

이 페이지가 main이 아니면 안될 것 같음...

근데 그럼 사용자의 상품구매 페이지도.. main이 없는데?

 

2. 사용자 로그인 신규 등록 페이지 DB 연동하기

 


 

 

1. adminpage 에서 ContactDAO 초기화 문제

 

원래 코드 ::

private static ContactDAO dao;

 

 

ContactDAO 클래스를 참조하는 dao라는 private static 변수를 선언하는 코드인데 

원래 코드에서는 main 클래스여서 main문 안에 dao를 초기화할 수 있었음 

근데 adminPage는 main클래스가 없음

 

// 싱글톤 객체 가져오기
	private ProductDAO dao = ProductDAOImple.getInstance();

 

그래서 이것저것 해보다가 이렇게 바꿈.

코드 설명 :

ProductDAOImple 클래스에서 정적 메소드인 getInstance()를 호출하여 해당 클래스의 인스턴스를 반환하는 코드.

디자인 패턴 중 하나인 싱글톤 패턴을 사용함. 

즉, ProductDAO의 인터페이스를 구현한 클래스의 싱글톤 인스턴스를 'dao' 변수에 할당하는 것. 

'dao' 변수를 초기화할 때 한 번만 해당 인스턴스를 생성하게 된다. 

 

* 싱글톤 패턴이란 어플리케이션 내의 특정 클래스의 인스턴스가 오직 하나만 존재하도록 보장하는 디자인 패턴

 

 

 

private void insertProd() {
		
		int result = 0;
		
		int Id = Integer.parseInt(textId.getText());

		String name = textName.getText();

		double price = Double.parseDouble(textPrice.getText());
		
		int stock = Integer.parseInt(textStock.getText());
		
		
		System.out.println("읽기 성공");
		
		ProductVO vo = new ProductVO(Id, name, price, stock);
		
		System.out.println("상품 등록 성공!");
		
		
		try {
	        // ProductDAOImple 클래스는 ProductDAO 인터페이스를 구현하고 있어야 합니다.
	        //ProductDAO dao = new ProductDAOImple();
	        result = dao.insert(vo);
	        // 위의 코드에서 오류가 발생하지 않는다면 이하의 코드는 동일하게 유지합니다.
	        int size = dao.select().size();
	        System.out.println("크기 측정 완료!");
	        
	        if(result == 1) { // 스크롤 테이블에 보여지는게 안댐ㅎㅎ
	            txtAreaInfo.setText("등록된 상품 개수 : " + size + "\n"
	                                + "등록 완료했습니다.");
	        }
	    } catch (Exception e) {
	        e.printStackTrace(); // 예외 발생 시 스택 트레이스 출력
	    }
	}//end insertProd()

 

 

 

 

형광펜 친 부분,,, txtAreaInfo에 출력이 안됨.. 다른 메소드들도 마찬가지임

 

앗 해결 ! 

 

 

 

원래 있던거 주석처리하고 위에 저렇게 하니깐 됐음ㅎ 

계속 nulpointexception떠서 빡쳤는데 해결됐다.

 

왤까... 왜 됐을까.. 이유는 모르겠다

 

 

 

2. 사용자 로그인 신규 등록 페이지 DB 연동하기

 

 

내용을 입력하고 등록을 누르면 DB에 등록되고 

콘솔창에 1행이 삽입됐다고 뜸

회원의 정보들은 관리자페이지에서만 확인가능하게 만들 것

 

 

 

insertUser() 메소드를 만들었음

아래가 작성 코드

private void insertUser() {
		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());
			
			// 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에 넣어주기

 

 

DB연결을 위해 Customer쿼리를 implements 함

 

 

이제 이 부분을 채우는 코드를 작성!

 

 

 

메소드 생성 

 

private void CustomerLogin() {
		// DB에서 고객 정보를 가져오기
	    ArrayList<CustomerVO> List = OracleCustomerOuery.getAllCustomers();

		// 사용자가 입력한 Id,Pw 
	    String inputId = textID.getText();
	    String inputPw = textPW.getText();
	    
	    // DB에서 가져온 고객 정보와 입력된 아이디와 비밀번호를 비교하여 로그인 처리
	    for(CustomerVO vo : List) {
	    	if(vo.getCustomerId().equals(inputId) && vo.getPassword().equals(inputPw)) {
	    		//로그인 성공
	    		System.out.println("로그인 성공");
	    		// 상품 구매 페이지로 넘어가게 하기
	    		UserPage purchase = new UserPage(vo.getCustomerName());
	    		purchase.setVisible(true);
	    		
	    		// 현재 로그인 창 닫기
	    		dispose();
	    		
	    		// 로그인 성공했으면 반복문 나가기
	    		return; 
	    	}
	    }
	    // 로그인 실패
	    System.out.println("로그인을 실패했습니다.");
	    
	}//end CustomerLogin()

 

 

 

CustomerVO를 가져왔기 때문에... id,pw,name,contact 다 받아옴

그래서 

vo.getCustomerName()으로 이름을 가져올 수 있음..

제대로 된 방법은 아니지만 어쩔 수 없다

 

UserPage로 넘어가서 이렇게 입력하구 

 

 

name 입력

 

 

이렇게 잘 나옴,,,

 

아 그리고 

상품을 클릭했을 때 

수량 선택해서 구매하도록 다시 재설정할듯

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
29 30
글 보관함