티스토리 뷰
- 오늘의 할 일 -
Usercreate - 신규 등록 페이지 -> 중복 Id,pw 예외 처리Usercreate - 신규 등록 페이지 -> 로그인을 성공하면 현재 창 닫게 하기CustomerSelect - 회원 조회 페이지 -> 고객 DB 테이블 보여지게 하기- UserPurchase - 사용자의 구매페이지 -> Userpage에서 특정 상품을 클릭하면 가져오기(리스트담기 ㄴㄴ) purchase 메서드 클릭하면 product DB 에 보내주기(update) , purchase DB에 고객id, 상품과 수량이 담겨야함
- adminpage - 관리자 페이지 -> 수정,검색,삭제 기능 수정
신규 등록 페이지
중복된 아이디가 존재합니다. 로 수정해야할듯
하나 더 해보면
이미 존재하는 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 프레임으로 가서
메소드 생성
빨간색으로 칠한 부분만 달라짐
확실히 코드 길이가 확 줄어서 보기는 편한듯
'백엔드 교육과정 > 3월' 카테고리의 다른 글
2024.03.15 _ 사이드 프로젝트 발표 전 점검 (0) | 2024.03.15 |
---|---|
2024.03.14_ 사이드 프로젝트 보완 (0) | 2024.03.15 |
2024.03.11_사이드 프로젝트_백엔드 부분 (0) | 2024.03.12 |
2024.03.07_ 사이드 프로젝트 (0) | 2024.03.07 |
사이드 프로젝트 보강 (0) | 2024.03.06 |