1. 테이블 만들기
create table naverMember
(id varchar2(15) primary key,
pw varchar2(15) not null,
name varchar2(20) not null,
gender varchar2(10),
birth varchar2(10),
email varchar2(25),
tel varchar2(13));
○ 테이블 명 : naverMember
○ 컬럼
id : 아이디. 15자 이내
pw : 비밀번호. 15자 이내
name : 이름
gender : 성별
birth : 생일. 형식 xxxx-xx-xx
email : 이메일. 형식 xxxxx@daum.net
tel : 전화번호. 형식 010-xxxx-xxxx
2. NaverDTO
package com.naver3;
public class NaverDTO {
private String id;
private String pw;
private String name;
private String gender;
private String birth;
private String email;
private String tel;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
@Override
public String toString() {
String str = String.format("아이디:%s \n이름:%s \n성별:%s \n생일:%s \n이메일:%s \n번호:%s \n",
id, name, gender, birth, email, tel);
return str;
}
}
3. 예외처리
① AuthenException
package com.naver3;
public class AuthenException extends Exception{
private static final long serialVersionUID = 1L;
public AuthenException(String message){
super(message);
}
}
② NaverException
package com.naver3;
public class NaverException {
//아이디 확인
public void idFormat(String str) throws AuthenException{
if(str.length()<5 || str.length()>15){
throw new AuthenException("5~15자 이내의 아이디만 가능합니다");
}
int cnt1=0;
int cnt2=0;
for(int i=0;i<str.length();i++){
char ch = str.charAt(i);
if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z'))
cnt1++;
else if(ch>='0' && ch<='9')
cnt2++;
}
if(cnt1==0 || cnt2==0)
throw new AuthenException("아이디는 영문자와 숫자를 혼용해서 만들어주세요");
}
//비밀번호 확인
public void pwCheck(String pw1, String pw2) throws AuthenException{
int cnt1=0;
int cnt2=0;
for(int i=0;i<pw1.length();i++){
char ch = pw1.charAt(i);
if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z'))
cnt1++;
else if(ch>='0' && ch<='9')
cnt2++;
}
if(cnt1==0 || cnt2==0)
throw new AuthenException("비밀번호는 영문자와 숫자를 혼용해서 만들어주세요");
if(!pw1.equals(pw2))
throw new AuthenException("비밀번호가 다릅니다");
}
//성별확인
public void genCheck(String gender) throws AuthenException{
if(!gender.equals("남") && !gender.equals("여")){
throw new AuthenException("※성별이 모호하군요!\n성별은 여/남으로 적어주세요;)");
}
}
//이름 확인
public void nameCheck(String name) throws AuthenException {
boolean check = Pattern.matches("^[ㄱ-ㅎ가-힣]*$", name);
if (!check)
throw new AuthenException("※이름은 한글로 입력해주세요");
}
// 전화번호 확인
public void phoneCheck(String phone) throws AuthenException {
boolean check = Pattern.matches(
"(010|011|016|017|018?019)-(\\d{3,4})-(\\d{4})", phone);
if (!check)
throw new AuthenException("※전화번호 입력 형식은 [XXX-XXXX-XXXX]입니다");
}
}
4. NaverDAO
사용자가 입력한 값을 sql문을 이용하여 DB에 넣는 과정
package com.naver3;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.db.DBConn;
public class NaverDAO {
//1.insert
public int insertData(NaverDTO dto){
int result = 0;
Connection conn = DBConn.getConnection();
PreparedStatement pstmt = null;
String sql;
try {
sql = "insert into naverMember (id,pw,name,gender,birth,email,tel) ";
sql+= "values (?,?,?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, dto.getId());
pstmt.setString(2, dto.getPw());
pstmt.setString(3, dto.getName());
pstmt.setString(4, dto.getGender());
pstmt.setString(5, dto.getBirth());
pstmt.setString(6, dto.getEmail());
pstmt.setString(7, dto.getTel());
result = pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
System.out.println(e.toString());
}
return result;
}
//2.update
public int updateData(NaverDTO dto){
int result = 0;
Connection conn = DBConn.getConnection();
PreparedStatement pstmt = null;
String sql;
try {
sql = "update naverMember set pw=?, email=?, tel=? ";
sql+= "where id=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, dto.getPw());
pstmt.setString(2, dto.getEmail());
pstmt.setString(3, dto.getTel());
pstmt.setString(4, dto.getId());
result = pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
System.out.println(e.toString());
}
return result;
}
//3.delete
public int deleteDate(String id, String pw){
int result = 0;
Connection conn = DBConn.getConnection();
PreparedStatement pstmt = null;
String sql;
try {
sql = "delete naverMember where id=? and pw=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pw);
result = pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
System.out.println(e.toString());
}
return result;
}
//4.selectAll
public List<NaverDTO> getList() {
List<NaverDTO> lists = new ArrayList<NaverDTO>();
Connection conn = DBConn.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql;
try {
sql = "select id,pw,name,gender,birth,email,tel ";
sql+= "from naverMember order by name";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()){
NaverDTO dto = new NaverDTO();
dto.setId(rs.getString("id"));
dto.setPw(rs.getString("pw"));
dto.setName(rs.getString("name"));
dto.setGender(rs.getString("gender"));
dto.setBirth(rs.getString("birth"));
dto.setEmail(rs.getString("email"));
dto.setTel(rs.getString("tel"));
lists.add(dto);
}
rs.close();
pstmt.close();
} catch (Exception e) {
System.out.println(e.toString());
}
return lists;
}
//5.searchId
public List<NaverDTO> getList(String id){
List<NaverDTO> lists = new ArrayList<NaverDTO>();
Connection conn = DBConn.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql;
try{
sql = "select id,pw,name,gender,birth,email,tel ";
sql+= "from naverMember where id=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
while(rs.next()){
NaverDTO dto = new NaverDTO();
dto.setId(rs.getString("id"));
dto.setPw(rs.getString("pw"));
dto.setName(rs.getString("name"));
dto.setGender(rs.getString("gender"));
dto.setBirth(rs.getString("birth"));
dto.setEmail(rs.getString("email"));
dto.setTel(rs.getString("tel"));
lists.add(dto);
}
rs.close();
pstmt.close();
}catch (Exception e) {
System.out.println(e.toString());
}
return lists;
}
}
5. Naver
사용자에게 입력받는 부분
package com.naver3;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class Naver {
Scanner sc = new Scanner(System.in);
NaverDAO dao = new NaverDAO();
NaverException ne = new NaverException();
//회원가입
public void insert() throws AuthenException {
String pw2=null;
boolean id=true;
boolean pw=true;
boolean name=true;
boolean gender=true;
boolean tel=true;
System.out.println(" 회원가입");
System.out.println("-------------------------------------");
try {
NaverDTO dto = new NaverDTO();
do{
try{
System.out.print("아이디:");
dto.setId(sc.next);;
ne.idFormat(dto.getId);
id=false;
}catch (AuthenException e) {
System.out.println(e.toString());
}
} while(id);
do{
try{
System.out.print("비밀번호:");
dto.setPw(sc.next());
System.out.print("비밀번호 확인:");
pw2 = sc.next();
ne.pwCheck(dto.getPw(), pw2);
pw=false;
}catch (AuthenException e) {
System.out.println(e.toString());
}
} while(pw);
do{
try{
System.out.print("이름:");
dto.setName(sc.next());
ne.nameCheck(dto.getName());
name=false;
}catch (AuthenException e) {
System.out.println(e.toString());
}
} while(name);
do{
try{
System.out.print("성별[여/남]:");
dto.setGender(sc.next());
ne.genCheck(dto.getGender());
gender=false;
}catch (AuthenException e) {
System.out.println(e.toString());
}
} while(gender);
System.out.print("생일[xxxx-xx-xx]:");
dto.setBirth(sc.next());
System.out.print("이메일[xxxxx@daum.net]:");
dto.setEmail(sc.next());
do{
try{
System.out.print("전화번호[xxx-xxxx-xxxx]:");
dto.setTel(sc.next());
ne.phoneCheck(dto.getTel());
tel=false;
}catch (AuthenException e) {
System.out.println(e.toString());
}
} while(tel);
int result = dao.insertData(dto);
if(result!=0){
System.out.println();
System.out.println("****성공적으로 가입이 되었습니다!****");
System.out.println();
System.out.println("-----------[회원가입 확인]-----------");
System.out.println(dto.toString());
}
else
System.out.println("회원가입에 실패했습니다");
} catch (Exception e) {
System.out.println(e.toString());
}
}
//수정
public void update() {
try {
NaverDTO dto = new NaverDTO();
System.out.print("수정 할 아이디:");
dto.setId(sc.next());
System.out.print("비밀번호:");
dto.setPw(sc.next());
System.out.print("이메일[xxxxx@daum.net]:");
dto.setEmail(sc.next());
System.out.print("전화번호[xxx-xxxx-xxxx]:");
dto.setTel(sc.next());
int result = dao.updateData(dto);
if(result!=0)
System.out.println("회원정보가 수정되었습니다");
else
System.out.println("회원정보수정에 실패했습니다");
} catch (Exception e) {
System.out.println(e.toString());
}
}
//탈퇴
public void delete() {
try {
String id, pw;
System.out.print("탈퇴 할 아이디:");
id = sc.next();
System.out.print("비밀번호 확인:");
pw = sc.next();
int result = dao.deleteDate(id,pw);
if(result!=0)
System.out.println("성공적으로 탈퇴하였습니다.\n다음에 다시 가입해주세요! ;)");
else
System.out.println("탈퇴에 실패했습니다.\n영원히 회원으로 남아주세요:)");
} catch (Exception e) {
System.out.println(e.toString());
}
}
//회원 전체출력
public void selectAll() {
List<NaverDTO> lists = dao.getList();
Iterator<NaverDTO> it = lists.iterator();
int i=1;
while(it.hasNext()){
NaverDTO dto = it.next();
System.out.println("[회원 "+i+"]");
System.out.println(dto.toString());
i++;
}
}
//아이디검색
public void searchId() {
System.out.print("검색 할 아이디:");
List<NaverDTO> lists = dao.getList(sc.next());
Iterator<NaverDTO> it = lists.iterator();
if(!it.hasNext()){
System.out.println("검색한 아이디는 존재하지 않습니다.");
}
while(it.hasNext()){
NaverDTO dto = it.next();
System.out.println(dto.toString());
}
}
}
6. NaverMain
package com.naver3;
import java.util.Scanner;
import com.db.DBConn;
public class NaverMain {
public static void main(String[] args) throws AuthenException {
Scanner sc = new Scanner(System.in);
Naver ob = new Naver();
int ch;
while(true){
do{
System.out.print("1.입력 2.수정 3.탈퇴 4.회원전체출력 5.아이디검색 6.종료");
System.out.print("\n-------------------------------------\n▶");
ch = sc.nextInt();
} while(ch<1 || ch>6);
System.out.println();
switch(ch){
case 1:
ob.insert();
System.out.println(); break;
case 2:
ob.update();
System.out.println(); break;
case 3:
ob.delete();
System.out.println(); break;
case 4:
ob.selectAll();
System.out.println(); break;
case 5:
ob.searchId();
System.out.println(); break;
case 6:
DBConn.close();
System.exit(0);
}
}
}
}
결과 ① 입력
1.입력 2.수정 3.탈퇴 4.회원전체출력 5.아이디검색 6.종료
--------------------------------------------------------------------------------
▶1
회원가입
--------------------------------------------------------------------------------
아이디:sunkist03
비밀번호:orange5
비밀번호 확인:orange5
이름:선키스트
성별[여/남]:여
생일[xxxx-xx-xx]:2003-05-05
이메일[xxxxx@daum.net]:sun&orange@daum.net
전화번호[xxx-xxxx-xxxx]:010-5555-5555
*********성공적으로 가입이 되었습니다!*********
------------------------------[회원가입 확인]------------------------------
아이디:sunkist03
이름:선키스트
성별:여
생일:2003-05-05
이메일:sun&orange@daum.net
번호:010-5555-5555
1.입력 2.수정 3.탈퇴 4.회원전체출력 5.아이디검색 6.종료 -------------------------------------------------------------------------------- ▶1 회원가입 -------------------------------------------------------------------------------- 아이디:greengrape12 비밀번호:strawberry10 비밀번호 확인:strawberry10 이름:청포도 성별[여/남]:남 생일[xxxx-xx-xx]:2005-01-01 이메일[xxxxx@daum.net]:greenapple@daum.net 전화번호[xxx-xxxx-xxxx]:010-1212-1111 *********성공적으로 가입이 되었습니다!********* ------------------------------[회원가입 확인]------------------------------ 아이디:greengrape12 이름:청포도 성별:남 생일:2005-01-01 이메일:greenapple@daum.net 번호:010-1212-1111
결과 ② 수정
1.입력 2.수정 3.탈퇴 4.회원전체출력 5.아이디검색 6.종료 -------------------------------------------------------------------------------- ▶2 수정 할 아이디:sunkist03 비밀번호:lemon21 이메일[xxxxx@daum.net]:sun&lenom@daum.net 전화번호[xxx-xxxx-xxxx]:010-2121-1111 회원정보가 수정되었습니다 1.입력 2.수정 3.탈퇴 4.회원전체출력 5.아이디검색 6.종료 -------------------------------------------------------------------------------- ▶4 [회원 1] 아이디:sunkist03 이름:선키스트 성별:여 생일:2003-05-05 이메일:sun&lenom@daum.net 번호:010-2121-1111 [회원 2] 아이디:greengrape12 이름:청포도 성별:남 생일:2005-01-01 이메일:greenapple@daum.net 번호:010-1212-1111
결과 ③ 탈퇴
1.입력 2.수정 3.탈퇴 4.회원전체출력 5.아이디검색 6.종료 -------------------------------------------------------------------------------- ▶3 탈퇴 할 아이디:greengrape12 비밀번호 확인:strawberry10 성공적으로 탈퇴하였습니다. 다음에 다시 가입해주세요! ;)
1.입력 2.수정 3.탈퇴 4.회원전체출력 5.아이디검색 6.종료 -------------------------------------------------------------------------------- ▶4 [회원 1] 아이디:sunkist03 이름:선키스트 성별:여 생일:2003-05-05 이메일:sun&lenom@daum.net 번호:010-2121-1111
결과 ④ 아이디검색
1.입력 2.수정 3.탈퇴 4.회원전체출력 5.아이디검색 6.종료 -------------------------------------------------------------------------------- ▶4 [회원 1] 아이디:banana87 이름:망고 성별:남 생일:1998-08-08 이메일:banana4@daum.net 번호:010-0808-8888 [회원 2] 아이디:strawbery24 이름:바나나 성별:여 생일:1998-08-08 이메일:strawberry@daum.net 번호:010-0808-8888 [회원 3] 아이디:sunkist03 이름:선키스트 성별:여 생일:2003-05-05 이메일:sun&lenom@daum.net 번호:010-2121-1111
1.입력 2.수정 3.탈퇴 4.회원전체출력 5.아이디검색 6.종료 -------------------------------------------------------------------------------- ▶5 검색 할 아이디:today45 검색한 아이디는 존재하지 않습니다. 1.입력 2.수정 3.탈퇴 4.회원전체출력 5.아이디검색 6.종료 -------------------------------------------------------------------------------- ▶5 검색 할 아이디:sunkist03 아이디:sunkist03 이름:선키스트 성별:여 생일:2003-05-05 이메일:sun&lenom@daum.net 번호:010-2121-1111
'STUDY > JAVA' 카테고리의 다른 글
Java 21일차(2) - conn.createStatement 옵션, MetaData (0) | 2019.02.06 |
---|---|
Java 21일차(1) - 다른 컴퓨터의 데이터베이스와 연결 (0) | 2019.02.06 |
Java 20일차(1) -자바 오라클 연결, Statement (0) | 2019.02.01 |
Java 8일차 (0) | 2019.01.29 |
Java 7일차 (0) | 2019.01.28 |
댓글