회원가입을 위해 데이터베이스를 사용하여 사용자의 정보를 저장한다.

처음 로그인 페이지에서 회원가입 버튼을 클릭 시 새로운 회원가입의 화면이 필요하기 때문에

로그인페이지(LoginUI.java) 에서 회원가입버튼 클릭시 조인디비(DBJoin.java)가 실행된다.

  →   


이렇게 생긴 JFrame을 구성한후

이벤트를 생성한다.

JFrame소스는 생략하고 DB소스만 가져온다.


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
 
    Statement stmt = null;
    ResultSet rs = null;
    String url = "jdbc:oracle:thin:@localhost:1521:xe"// 오라클 포트번호1521/@이후에는 IP주소
    String sql = null;
    Properties info = null;
    Connection cnn = null;
 
    @Override
    public void mouseClicked(MouseEvent e) {
 
        // TextField 클릭시 예시지워주기
        if (e.getSource().equals(idTf)) {
            idTf.setText("");
        } else if (e.getSource().equals(pwTf)) {
            pwTf.setText("");
        } else if (e.getSource().equals(nameTf)) {
            nameTf.setText("");
        } else if (e.getSource().equals(birthTf)) {
            birthTf.setText("");
        }
 
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver"); // 알아서 들어간다..conn로
            info = new Properties();
            info.setProperty("user""scott");
            info.setProperty("password""tiger");
            cnn = DriverManager.getConnection(url, info); // 연결할 정보를 가지고있는 드라이버매니저를 던진다
            stmt = cnn.createStatement();
 
            // 테이블이 생성
            /*
             * sql =
             * "create table joinDB(id varchar2(20) primary key,pw varchar2(20) not null,name varchar2(30),birth number(6))"
             * ; stmt.execute(sql); System.out.println("테이블생성완료");
             */
 
            // id 체크버튼
            if (e.getSource().equals(checkBt)) {
                sql = "select * from joinDB where id='" + idTf.getText() + "'";
                rs = stmt.executeQuery(sql); // 읽어오는거라 다르다 비교해//리턴타입이 ResultSet
 
                if (rs.next() == true || (idTf.getText().isEmpty()) == true) { // 이미 id가 존재한다면
                    msgbox.messageBox(logPanel3, "해당 ID는 사용이 불가능합니다. 다시 작성해주세요.");
                } else {
                    msgbox.messageBox(logPanel3, "사용 가능한 ID 입니다.");
                }
            }
 
            // 가입 버튼
            if (e.getSource().equals(joinBtn)) {
                sql = "select * from joinDB where id='" + idTf.getText() + "'";
 
                rs = stmt.executeQuery(sql); // 읽어오는거라 다르다 비교해//리턴타입이 ResultSet
 
                if (rs.next() == true) { // 이미 id가 존재한다면
                    msgbox.messageBox(logPanel3, "ID Check가 필요합니다.");
 
                } else if ((idTf.getText().isEmpty()) == true || (pwTf.getText().isEmpty()) == true
                        || (nameTf.getText().isEmpty()) || (birthTf.getText().isEmpty())) {        //빈칸이 있을경우
                    msgbox.messageBox(logPanel3, "비어있는 칸이 존재합니다.");
                } else if ((birthTf.getText().length()) != 6) {
                    msgbox.messageBox(logPanel3, "생년월일 서식이 잘못되었습니다.");     //6자리 숫자가 아닌경우
                } else {
 
                    sql = "insert into joinDB values ('" + idTf.getText() + "','" + pwTf.getText() + "','"
                            + nameTf.getText() + "','" + birthTf.getText() + "')";
                    stmt.executeUpdate(sql);
                    msgbox.messageBox(logPanel3, "축하합니다.가입 되셨습니다.");
                    frame.dispose(); // 창 닫기
                    dbClose();
                }
            }
        } catch (Exception ee) {
            System.out.println("문제있음");
            ee.printStackTrace();
        }
    }// mouseClicked 이벤트 end
    @Override
    public void mousePressed(MouseEvent e) {
    }
    @Override
    public void mouseReleased(MouseEvent e) {
    }
    @Override
    public void mouseEntered(MouseEvent e) {
    }
    @Override
    public void mouseExited(MouseEvent e) {
    }
    public void dbClose() {
        try {
            if (rs != null)
                rs.close();
            if (stmt != null)
                stmt.close();
            if (cnn != null)
                cnn.close();
        } catch (SQLException e1) {
            e1.printStackTrace();
        }
    }
 
cs


테이블생성하는 sql문은 작성되어 있지만 사실 db에서 미리 생성 했다.

보기로 주석처리해서 넣어둔 것이므로 테이블 생성시 저소스 그대로 실행하면 오류가 날 것이다.


텍스트필드를 클릭시 예시된 글을 지워주는 이벤트를 생성했다.

회원가입시 모든 내용을 작성해야 하며 id가 기본키로 설정했기 때문에 중복여부를 확인해야한다.

또한 생년월일의 숫자 6자리 서식도 맞아야 가입이 가능하다.

이러한 조건들을 만족했을 때 회원가입이 완료되며 데이터베이스에 insert문으로 값이 들어가게 된다.

또한 여기서 보여지는

 msgbox.messageBox(logPanel3, "축하합니다.가입 되셨습니다.");

이러한 메시지박스는 따로 자바파일로 작성했다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.so.pro;
 
import java.awt.Component;
 
import javax.swing.JOptionPane;
 
public class MsgeBox {
 
    public void messageBox(Object obj , String message){
        JOptionPane.showMessageDialog( (Component)obj , message);
    }
    
}
 
cs


'* Project > Chatting_Pro' 카테고리의 다른 글

서버  (0) 2016.09.07
대기화면 소스(WaitRoomUI.java)  (0) 2016.09.07
회원 수정 DB / 회원 탈퇴 DB  (1) 2016.09.07
로그인 체크 DB  (1) 2016.09.07
전체 파일  (0) 2016.09.07

+ Recent posts