● MySQL에서 먼저 테이블을 구성한다. 자바에서 구성한것들을 여기서 받아서
데이터베이스에 저장한다.
create database project;
use project;
create table user(
userid varchar(300) primary key,
userpw varchar(300) not null,
username varchar(300) not null,
userphone varchar(300)not null,
useraddr varchar(2000)not null
);
create table car(
carnum varchar(300) primary key,
cartype varchar(300) not null,
distance varchar(300) not null,
carage varchar(300),
price varchar(300) not null,
userid varchar(300),
constraint id_fk foreign key(userid) references user(userid)
);
/* 거래상태 테이블 */
create table dealinfo(
tradenum int primary key auto_increment,
tradestatus varchar(300) not null default "거래대기",
registtime datetime default current_timestamp,
carnum varchar(300),
constraint carnum_fk foreign key(carnum) references car(carnum),
userid varchar(300),
constraint id2_fk foreign key(userid) references user(userid)
);
/* 찜하기 테이블*/
create table wish_list(
dib_num int primary key auto_increment,
/* datetime default current_timestamp 하면 입력할 필요 없이 자동으로 현재시간등록*/
dib_car varchar(300),
dib_userid varchar(300),
dib_time datetime default current_timestamp,
userid varchar(300),
constraint did_fk foreign key(userid) references user(userid)
);
/* 거래후기 테이블 */
create table review(
article_number int primary key auto_increment,
title varchar(300) not null,
detail varchar(4000) not null,
registtime datetime default current_timestamp,
carnum varchar(300),
constraint carnum2_fk foreign key(carnum) references car(carnum),
userid varchar(300),
constraint id4_fk foreign key(userid) references user(userid)
);
/* 쪽지 테이블 */
create table message(
msgnum int primary key auto_increment,
send_id varchar(300) not null,
msg varchar(300) not null,
registtime datetime default current_timestamp,
recieve_id varchar(300) not null,
constraint message_fk foreign key(recieve_id) references user(userid)
);
● MySQL에서 받아올 수 있는 것들을 구성했으니 이클립스를 구성해보자
● dao패키징에 생성
● MySQL과 연결하기 위해서 필수적으로 있어야 한다!
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DBConnection {
private static Connection conn;
public static Connection getConnection() {
// 싱글톤 패턴 : 단 하나의 객체만 만들어서 사용하도록 설계된 패턴
if(conn == null) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("드라이버 로딩 성공!");
// 다리를 짓고자 하는 목적지
// 맨뒤에 project는 MySQL에서 이클립스와 연동할
// database이름이다. 다른 database면 다른 이름을
// 써줘야 한다.
String url = "jdbc:mysql://localhost:3306/project";
String user = "root";
String password = "1234";
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException cnfe) {
System.out.println("드라이버 로딩 실패 : " + cnfe);
} catch(SQLException sqle) {
System.out.println("DB 연결 실패 : " + sqle);
}
}
return conn;
}
}
● view패키지에서 생성
● 시작하는 페이지
package view;
import java.util.Scanner;
//index : 시작하는 페이지
public class Index {
public static void main(String[] args) {
System.out.println("★☆★☆★☆다솔Car★☆★☆★☆");
System.out.println("환영합니다!!!");
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("1. 회원가입\n2. 로그인 \n3. 나가기");
int choice = sc.nextInt();
// Controller
if(choice == 3) {
System.out.println("안녕히가세요");
// 강제종료
// 정상적인 종료
System.exit(0);
}
switch(choice) {
case 1:
// 회원가입
// JoinView 클래스 생성
new JoinView();
break;
case 2:
// 로그인
// LoginView 클래스 생성
new LoginView();
break;
default:
System.out.println("다시 입력하세요");
}
}
}
}
→ 1을 입력받으면 회원가입할 수 있는 클래스를 생성자로 불러온다.
→ 2를 입력받으면 로그인할 수 있는 클래스를 생성자로 불러온다.
● view패키지에서 생성
● 회원가입 클래스이다.
● 생성자로 불러올 수 있게 생성자안에 코드를 작성하자!
○ 생성자로 불러오는 이유:
■ 단지 불러오는 용도로 사용할꺼고 여기에서 생성할게 회원가입을
위해 작성하는거기 때문에 생성자로 만들어서 불러오자!
앞으로 view에서 만들 클래스도 같은 형식이기 때문에 설명은 여기서만 한다.
public class JoinView {
// Index 클래스에서 회원가입을 위한 생성자 생성
public JoinView() {
Scanner sc = new Scanner(System.in);
//새로 가입할 "회원의 정보들" 을 데이터베이스에 저장해야 하므로
//기능을 구현해 놓은 DAO가 필요하고, 회원 관련된 데이터이므로
//UserDAO를 사용해야 한다.
UserDAO udao = new UserDAO();
UserDTO udto = new UserDTO();
boolean condition = false;
while(true) {
System.out.print("아이디 : ");
String userid = sc.next();
// 중복 검사
if(udao.checkDup(userid)) {
System.out.println("사용 가능한 아이디 입니다");
System.out.println("비밀번호 : (조건: 대문자,소문자,숫자,특문 포함하여 8글자 ~ 20글자)");
// sc = new Scanner(System.in);
String userpw = sc.next();
if(checkpw2(userpw)){
System.out.println("가능한 비밀번호 입니다.");
} else {
System.out.println("불가능한 비밀번호 입니다.");
break;
}
System.out.print("이름 : ");
String username = sc.next();
System.out.print("핸드폰 번호 : ");
String userphone = sc.next();
condition = false;
for (int i = 0; i < userphone.length() ; i++) {
// System.out.println(userphone.charAt(i));
// 대문자 확인(아스키 코드)
char ch = userphone.charAt(i);
if(ch <= 90 && ch >= 65) {
// 대문자에 포함되면 false
condition = false;
System.out.println("대문자는 사용할 수 없습니다.");
// 그리고 나가짐
break;
// 대문자를 통과하면 소문자 검사!
} else if(ch >= 97 && ch <= 122) {
// 소문자면 false
condition = false;
System.out.println("소문자는 사용할 수 없습니다.");
// 인덱스로 가진다.
Index.main(null);
break;
// 특문 있나 확인후 있으면 false
} else if(ch >= 33 && ch <= 47) {
condition = false;
System.out.println("특수문자는 사용할 수 없습니다.");
// 인덱스로 가진다.
Index.main(null);
break;
} if(ch == 0) {
condition = false;
System.out.println("NUL이라 안됩니다.");
// 인덱스로 가진다.
Index.main(null);
break;
} if(ch >= '0' && ch <= '9') {
condition = true;
}
}
// condition = true;
// 숫자가 11개 면서 condition이 true이면 통과
if(userphone.length() ==11 && condition == true) {
System.out.println("정상적으로 입력되었습니다.");
// UserDTO에 있는 메소드에 입력
udto.setUserphone(userphone);
// condition이 false면
} else if(!condition) {
System.out.println("숫자만 입력하세요");
// 핸드폰 번호가 11가 아니면
} else if(userphone.length() != 11) {
System.out.println("전화번호는 11자리 입니다.");
} else {
System.out.println("오류가 발생했습니다.");
}
System.out.print("주소 : ");
sc = new Scanner(System.in);
String useraddr = sc.nextLine();
//여기까지 왔다면 회원 가입에 필요한 모든 정보를 입력받았다는
//뜻이므로, UserTable에 이 모든 데이터들을 저장해 주어야 한다.
//저장하는 기능적인 코드들은 View에서 구현하는 것이 아니고
//udao에 구현해 놓고 메소드를 호출하는 식으로 사용한다.
//호출시 넘겨주어야 할 데이터들이 총 6개나 되므로 UserDTO 타입의
//객체 하나로 포장해서 그 객체를 매개변수에 넘겨준다.
UserDTO user = new UserDTO(userid, userpw, username, userphone, useraddr);
//위에서 포장된 DTO 객체를 넘겨준다.
// user을 UserDAO에 넘겨준다.
if(udao.join(user)) {
System.out.println("회원가입 성공!");
System.out.println(username+"님 가입을 환영합니다!");
new LoginView();
}
else {
System.out.println("회원가입 실패 / 다시 시도해 주세요.");
break;
}
} else {
System.out.println("중복된 아이디가 있습니다. 다시 시도해 주세요.");
break;
}
}
}
// 소문자, 대문자, 0~9 숫자, 특수문자 8자리 이상!(소문자, 대문자 같이 안써도 됨!)
// 위에서 비밀번호를 생성하기위한 조건을 주기위해서 메소드 만들었다!
public boolean checkpw2(String userpw) {
String passwordPolicy = "^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[$@$!%*#?&])[A-Za-z[0-9]$@$!%*#?&]{8,20}$";
Pattern pattern_pwd = Pattern.compile(passwordPolicy);
Matcher matcher_pwd = pattern_pwd.matcher(userpw);
return matcher_pwd.matches();
}
}
① if(udao.checkDup(userid)) { 이거는 회원가입할 때 아이디가 기존에 있는
아이디인지 확인하기 위해서 UserDAO에서 기능을 구현했다.
▼
// JoinView클래스에 있는 중복검사 메소드 기능 구현
public boolean checkDup(String userid) {
String sql = "select * from user where userid=?";
try {
// 만들어논 다리를 이용(만들어 놓은 다리 위를 왔다갔다 할 택배차 만들기)
// prepareStatement 메소드에 우리가 시행하고자 할 sql문을 넘겨주면서 뽑아준다.
ps = conn.prepareStatement(sql);
ps.setString(1, userid);
rs = ps.executeQuery();
// 회원가입 전에 검사하는 거니까
// 중복된게 없어야 true가 되야므로 !rs.next 리턴
return !rs.next();
} catch (SQLException sqle) {
System.out.println("checkDup 수행 실패! : " + sqle);
}
return false;
}
② if(checkpw2(userpw)){ 이거는 회원가입할 때 비밀번호에 조건을 주기
위해서 하단부분에 메소드를 만들어서 사용했다.
● DAO에 포장된 객체들을 보내주기 위해서 DTO를 생성해줬다.
package dto;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class UserDTO {
//Alt + Shift + A : 그리드 편집 모드(여러줄 동시에 편집)
private String userid;
private String userpw;
private String username;
private String userphone;
private String useraddr;
public UserDTO() {
this.userid = "";
this.userpw = "";
this.username = "";
this.userphone = "";
this.useraddr = "";
}
public UserDTO(String userid, String userpw, String username, String userphone, String useraddr) {
this.userid = userid;
this.userpw = userpw;
this.username = username;
this.userphone = userphone;
this.useraddr = useraddr;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getUserpw() {
return userpw;
}
public void setUserpw(String userpw) {
this.userpw = userpw;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserphone() {
return userphone;
}
public void setUserphone(String userphone) {
this.userphone = userphone;
}
public String getUseraddr() {
return useraddr;
}
public void setUseraddr(String useraddr) {
this.useraddr = useraddr;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof UserDTO) {
UserDTO target = (UserDTO)obj;
if(target.userid.equals(this.userid)) {
return true;
}
}
return false;
}
@Override
public String toString() {
//apple abcd1234 김사과 10 01012341234 서울시 강남구 역삼동
return userid+"\t"+userpw+"\t"+username+
"\t"+userphone+"\t"+useraddr;
}
// String 타입 hashCode 사용하기
public boolean hashCode(Object obj) {
UserDTO anotherobj = (UserDTO)obj;
return (this.userid.equals(anotherobj.userid));
}
}
● view 패키지에서 생성
package view;
import java.util.Scanner;
import dao.UserDAO;
import dto.UserDTO;
public class LoginView {
// Index 클래스에서 생성자를 불러오기 위해서 생성자 생성
public LoginView() {
Scanner sc = new Scanner(System.in);
UserDAO udao = new UserDAO();
System.out.print("아이디 : ");
String userid = sc.next();
System.out.print("비밀번호 : ");
String userpw = sc.next();
// UserDAO에 userid, userpw을 매개변수로 넘겨준다.
if(udao.login(userid,userpw)) {
System.out.println(userid+"님 어서오세요~");
//메인창 띄우기
new MainView();
}
else {
System.out.println("로그인 실패 / 다시 시도해 주세요.");
new LoginView();
}
}
}
→ 아이디하고 비밀번호를 입력받고 DAO에 넘겨준다음 환영인사가 나오고
MainView로 가진다.
▼
// LoginView에서 매개변수를 받아와서 로그인 기능 구현
public boolean login(String userid, String userpw) {
String sql = "select * from user where userid =? and userpw=?";
try {
ps =conn.prepareStatement(sql);
ps.setString(1, userid);
ps.setString(2, userpw);
rs = ps.executeQuery();
if(rs.next()) {
// Session 클래스에 hashmap으로 아이디 데이터 기록해서
// put으로 저장하고 get으로 가져올 수 있게 구성
Session.put("login_id", userid);
return true;
}
} catch (SQLException sqle) {
System.out.println("login 수행 실패! : " + sqle);
}
return false;
}
● view 패키지에서 클래스 생성
● 여기에 회원정보, 차량검색, 커뮤니티, 내 정보수정, 로그아웃 기능이 있다.
package view;
import java.util.Scanner;
import dao.Session;
public class MainView {
public MainView() {
Scanner sc = new Scanner(System.in);
while(true) {
//우리가 만든 프로젝트는 무조건 main()부터 시작하는 프로그램이다.
//즉 진입점이 한개이기 때문에 아래와 같은 코드를 생략 가능하다.
//*웹 상이나 다른 프로그램에서는 진입점이 여러개일 수 있으므로
//아래처럼 로그인 되어있는지를 먼저 검사해주는것이 필요하다.
// 여기서 null이면 로그인중인게 아니므로 break되서 나가진다.
if(Session.get("login_id") == null) {
System.out.println("로그인 후 이용하세요");
break;
}
System.out.println("=========="+Session.get("login_id")+"님 환영합니다==========\n"
+ "1. 회원정보\n2. 차량검색\n3. 커뮤니티\n"
+ "4. 내 정보수정\n5. 로그아웃");
int choice = sc.nextInt();
if(choice == 5) {
//로그아웃
System.out.println(Session.get("login_id")+"님 안녕히가세요~");
//로그인한 정보를 담아주는 Session에서 login_id라는 KEY 와 쌍을 이루고 있는 값은
//로그아웃을 했다면 없애주어야 한다. 따라서 null로 초기화 해주어야 한다.
Session.put("login_id", null);
break;
}
switch (choice) {
//회원정보
case 1:
new MyinfoView();
break;
//차량검색
case 2:
new Car_Search();
break;
//커뮤니티(구매후기, 쪽지기능, 구매후기)
case 3:
new Review();
break;
//내 정보수정
case 4:
new Modify_Myinfo();
break;
default:
System.out.println("입력실패!!");
break;
}
}
}
}
● 내정보 보는 곳
● 찜한것도 볼 수 있다.
package view;
import java.util.Scanner;
import dao.CarDAO;
import dao.UserDAO;
public class MyinfoView {
public MyinfoView() {
Scanner sc = new Scanner(System.in);
UserDAO udao = new UserDAO();
System.out.println("1. 회원정보 확인 \n2. 찜한 목록 보기 \n3. 뒤로가기");
int choice = sc.nextInt();
if(choice == 1) {
System.out.print("비밀번호 재입력 : ");
String userpw = sc.next();
if(udao.checkpw(userpw)) {
System.out.println("============ 회원 정보 보는 곳===========");
System.out.println(udao.myInfo());
} else {
System.out.println("정보를 확인할 수 없습니다.");
}
} else if(choice ==2) {
System.out.println("찜하기 목록을 불러옵니다~");
System.out.println(udao.viewDib());
} else if(choice == 3) {
System.out.println("메인뷰로 돌아갑니다!");
new MainView();
}
}
}
① 여기서는 회원정보 확인, 찜한 목록을 볼 수 있다.
→ 회원정보를 보려고 하면 비밀번호를 재입력을 해야하고
그것을 if(udao.checkpw(userpw)) {가 체크한다.
▼
// 비밀번호를 재입력받는 거기 때문에 기존에 비밀번호가 있어야 한다.
public boolean checkpw(String userpw) {
String sql = "select * from user where userpw=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, userpw);
rs = ps.executeQuery();
// 비밀번호를 체크하는거니까 기존에 있어야 true
return rs.next();
} catch (SQLException sqle) {
System.out.println("checkpw 수행 실패! : " + sqle);
}
return false;
}
② 2번을 눌르면 찜하기 목록을 불러오는 곳으로 간다.
public String viewDib() {
String sql = "select * from wish_list where userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
rs = ps.executeQuery();
if(rs.next()) {
String car = rs.getString("dib_car");
String id = rs.getString("dib_userid");
return "\n\t찜한 차종 : " + car + "\n\t찜한 아이디 : " + id;
}
// } catch(NullPointerException sqle) {
// System.out.println("null에러 잡자");
}
catch (SQLException sqle) {
System.out.println("viewDib 수행 실패! : " + sqle);
}
return "찜한 목록이 없네요";
}
▼
package view;
import java.util.Scanner;
import dao.CarDAO;
import dto.CarDTO;
public class Car_Search {
public Car_Search() {
Scanner sc = new Scanner(System.in);
CarDAO cdao = new CarDAO();
boolean condition = false;
CarDTO cdto = new CarDTO();
while(true) {
System.out.println("1. 차량검색 \n2. 차량등록 \n3. 뒤로가기");
int choice = sc.nextInt();
if(choice == 1) {
System.out.println("\t==== 대문자로 입력해주세요 ==== ");
System.out.println("\t예시) k5(x) → K5(o)");
System.out.print("차종 검색 : ");
String cartype = sc.next();
// 위에서 차종을 체크해서 있는지 없는지 확인
// 있으면 있다고 뜨고 차량 검색기능을 불러옴
if(cdao.checkcar(cartype)) {
System.out.println("존재하는 차량입니다.");
System.out.println("차량 정보를 나타냅니다.");
System.out.println(cdao.searchCar(cartype));
break;
// 없으면 아래의 문구가 뜸
} else {
System.out.println("존재하지 않는 차량입니다.");
break;
}
} else if(choice == 2){
// 차량 식별 코드의미
System.out.println("차량번호 등록 : ");
String carnum = sc.next();
condition = false;
for (int i = 0; i < carnum.length(); i++) {
// 아스키 코드로 확인
// 대문자가 들어갔는지 확인 후 들어갔으면 false
char ch = carnum.charAt(i);
if(ch <= 90 && ch >= 65) {
condition = false;
System.out.println("대문자는 사용할 수 없습니다.");
break;
// 소문자가 들어갔으면 false
} else if(ch >= 97 && ch <= 122) {
condition = false;
System.out.println("소문자는 사용할 수 없습니다.");
break;
// 특문 있나 확인후 있으면 false
} else if(ch >= 33 && ch <= 47) {
condition = false;
System.out.println("특수문자는 사용할 수 없습니다.");
break;
} else if(ch == 0) {
condition = false;
System.out.println("NUL이라 안됩니다.");
break;
} else if(ch >= '0' && ch <= '9') {
condition = true;
}
}
// condition = true;
if(condition == true) {
System.out.println("정상적으로 입력되었습니다.");
cdto.setCarnum(carnum);
} else if(!condition) {
System.out.println("숫자형식으로 입력해주세요.");
// JoinView, Modify_MyInfo에서는 하나 틀리면 바로 날라가지만
// 여기서는 다 쓰고 틀리면 날라가게 구현
new Car_Search();
break;
} else {
System.out.println("오류가 발생했습니다.");
new Car_Search();
break;
}
System.out.println("\t==== 대문자로 입력해주세요 ==== ");
System.out.println("\t예시) k5(x) → K5(o)");
System.out.print("차종 등록 : ");
String cartype = sc.next();
System.out.print("주행 거리 등록 : ");
String distance = sc.next();
System.out.print("차량 가격 등록 : ");
String price = sc.next();
System.out.print("차량 연식 등록 : ");
String carage = sc.next();
System.out.print("차량 옵션 등록 : ");
sc = new Scanner(System.in);
String caroption = sc.nextLine();
// System.out.print("아이디 : ");
// String userid = sc.next();
CarDTO car = new CarDTO(carnum, cartype, distance, price, carage, caroption);
// 차량번호가 존재하고 있는지 확인하는 메소드를 불러옴
// 차량번호가 있는지 없는지 확인 후 없으면 등록 가능
if(cdao.checkcar1(carnum)) {
System.out.println("등록 가능한 차량번호입니다.");
// 차량 등록
if(cdao.joincar(car)) {
System.out.println("차량 등록 성공!!");
System.out.println("차량 거래 대기상태로 등록");
cdao.carDeal(car); // 추가
} else {
System.out.println("문제가 발생했습니다!");
}
} else {
// carnum이 동일하면 차량 등록 실패
System.out.println("차량 등록 실패 / 다시 시도해주세요!!");
}
// 뒤로가기
} else if(choice == 3) {
System.out.println("메인으로 돌아갑니다");
new MainView();
}
}
}
}
● 차량등록을 위해서 DTO를 생성해주자
package dto;
public class CarDTO {
// 중복되도 되는것만 있으면 구별이 안가니 carnum과 userid로 구별해준다.
// carnum은 차량 식별 번호
private String carnum;
private String cartype;
private String distance;
private String price;
private String carage;
private String caroption;
public CarDTO() {
this.carnum = "";
this.cartype = "";
this.distance = "";
this.price = "";
this.carage = "";
this.caroption ="";
}
public CarDTO(String carnum, String cartype, String distance, String price,
String carage, String caroption) {
this.carnum = carnum;
this.cartype = cartype;
this.distance = distance;
this.price = price;
this.carage = carage;
this.caroption = caroption;
// this.userid = userid;
}
public String getCarnum() {
return carnum;
}
public void setCarnum(String carnum) {
this.carnum = carnum;
}
public String getCartype() {
return cartype;
}
public void setCartype(String cartype) {
this.cartype = cartype;
}
public String getDistance() {
return distance;
}
public void setDistance(String distance) {
this.distance = distance;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getCarage() {
return carage;
}
public void setCarage(String carage) {
this.carage = carage;
}
public String getCaroption() {
return caroption;
}
public void setCaroption(String caroption) {
this.caroption = caroption;
}
// public String getUserid() {
// return userid;
// }
//
//
// public void setUserid(String userid) {
// this.userid = userid;
// }
@Override
public boolean equals(Object obj) {
if(obj instanceof CarDTO) {
CarDTO cdto = (CarDTO)obj;
return cdto.hashCode() == this.hashCode();
}
return false;
}
@Override
public String toString() {
return "차량번호 : " +carnum + "\n차종 : " + cartype + "\n주행거리 : " + distance
+ "\n가격 : " + price + "\n차량연식 : "
+ carage + "\n차량 옵션 : " + caroption;
}
}
// 검색전에 그 차가 있는지 체크하는 메소드
public boolean checkcar(String cartype) {
String sql = "select * from car where cartype=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
rs = ps.executeQuery();
// 중복된게 있어야 true가 되야하므로
// rs.next를 리턴
return rs.next();
} catch (SQLException sqle) {
System.out.println("checkcar 수행 실패! : " + sqle);
}
return false;
}
public boolean checkcar1(String carnum) {
String sql = "select * from car where carnum=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, carnum);
rs = ps.executeQuery();
// 차량 번호가 없어야 넣을 수 있는 기능이니
// 중복된게 없어야 true가 되야하므로
// !rs.next를 리턴
return !rs.next();
} catch (SQLException sqle) {
System.out.println("checkcar(carnum)수행 실패! : " + sqle);
}
return false;
}
public boolean joincar(CarDTO car) {
// 헷갈릴 까봐 그냥 전부 적어놈
String sql = "insert into car (carnum,cartype,distance,price,carage,caroption,userid)"
+ "values(?,?,?,?,?,?,?)";
try {
ps= conn.prepareStatement(sql);
ps.setString(1, car.getCarnum());
ps.setString(2, car.getCartype());
ps.setString(3, car.getDistance());
ps.setString(4, car.getPrice());
ps.setString(5, car.getCarage());
ps.setString(6, car.getCaroption());
ps.setString(7, Session.get("login_id"));
// carnum이 동일하지 않는한 등록은 다 가능
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("joincar 수행 실패! : " + sqle);
}
return false;
}
public boolean carDeal(CarDTO car) { // 추가
String sql = "insert into dealinfo (carnum,userid,registtime)"
+ "values(?,?,now())";
try {
ps= conn.prepareStatement(sql);
ps.setString(1, car.getCarnum());
ps.setString(2, Session.get("login_id"));
// carnum이 동일하지 않는한 등록은 다 가능
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("joincar 수행 실패! : " + sqle);
}
return false;
}
package view;
import java.util.Map;
import java.util.Scanner;
import dao.CarDAO;
import dao.ReviewDAO;
import dao.Session;
import dao.UserDAO;
import dto.ReviewDTO;
public class Review {
public Review( ) {
Scanner sc = new Scanner(System.in);
UserDAO udao = new UserDAO();
ReviewDAO rdao = new ReviewDAO();
CarDAO cdao = new CarDAO();
System.out.println("1. 구매후기 \n2. 쪽지보내기 \n3. 받은쪽지함 \n4. 구매하기 \n5. 판매하기 "
+ "\n6. 찜하기 \n7. 뒤로가기");
int choice = sc.nextInt();
// 뒤로 가기
if(choice == 7) {
System.out.println("메인으로 돌아갑니다");
new MainView();
// 구매후기
} else if(choice == 1) {
System.out.println("제목 입력 : ");
sc = new Scanner(System.in);
String title = sc.nextLine();
System.out.println("내용 입력 : ");
sc = new Scanner(System.in);
String detail = sc.nextLine();
System.out.print("차량번호 입력 : ");
int carnum = sc.nextInt();
ReviewDTO rdto = new ReviewDTO(title, detail, carnum);
if(rdao.writePost(rdto)) {
System.out.println("작성을 완료했습니다.");
} else {
System.out.println("작성을 실패했습니다.");
}
// 쪽지 보내기
} else if(choice == 2) {
System.out.println("보낼 내용을 입력하세요 : ");
sc = new Scanner(System.in);
String msg = sc.nextLine();
System.out.print("보낼 아이디 : ");
String name = sc.next();
if(rdao.sendMsg(msg, name)) {
System.out.println("메세지가 성공적으로 보내졌습니다.");
} else {
System.out.println("메세지 전송 실패!!!");
}
// 받은 쪽지함
} else if(choice == 3) {
System.out.println("1. 쪽지보기 \n2. 쪽지삭제");
int ch = sc.nextInt();
switch (ch) {
case 1:
System.out.println("받은 쪽지 내용을 표시하겠습니다.");
System.out.println( rdao.msgConfirm());
break;
case 2:
System.out.println("쪽지를 삭제하셨습니다.");
rdao.removeMsg();
break;
default:
System.out.println("잘못된 입력하셨습니다!!");
break;
}
// 구매하기
} public boolean saleIdck(String cartype) {
String sql = "select * from car where userid=? and cartype = ?";
try {
// 만들어논 다리를 이용(만들어 놓은 다리 위를 왔다갔다 할 택배차 만들기)
// prepareStatement 메소드에 우리가 시행하고자 할 sql문을 넘겨주면서 뽑아준다.
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
ps.setString(2, cartype);
rs = ps.executeQuery();
// 찜할 아이디가 존재하는지 확인하는 메소드
// 그렇기 때문에 데이터베이스에 해당 아이디가 있어야 한다.
return rs.next();
} catch (SQLException sqle) {
System.out.println("checkId 수행 실패! : " + sqle);
}
return false;
}
public boolean buyIdck(String cartype) { // 추가
String sql = "select * from car where userid=? and cartype =?";
try {
// 만들어논 다리를 이용(만들어 놓은 다리 위를 왔다갔다 할 택배차 만들기)
// prepareStatement 메소드에 우리가 시행하고자 할 sql문을 넘겨주면서 뽑아준다.
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
ps.setString(2, cartype);
rs = ps.executeQuery();
// 구매 전 동알한 아이디로 구매 불가에 검사하는 거니까
// 중복된게 없어야 true가 되야므로 !rs.next 리턴
return !rs.next();
} catch (SQLException sqle) {
System.out.println("checkDup 수행 실패! : " + sqle);
}
return false;
}
} else if(choice == 5) { // 수정
System.out.println("판매할 차량을 입력하세요 : ");
String cartype = sc.next();
// 판매할 차량과 로그인한 아이디하고 비교해서 있는지 확인
// 있어야 true가 나온다.
if(udao.saleIdck(cartype)) {
// dealinfo에 담긴 데이터가 null이 아니라면 true
if(cdao.tradeStatusck() != null) {
System.out.println(cdao.tradeStatusck());
if(cdao.checkcar(cartype)) {
System.out.println("존재 하는 차량입니다.");
System.out.println("차량 번호를 다시한번 입력해주세요 : ");
String carnum = sc.next();
if(cdao.checkcarnum(carnum)) {
System.out.println("차량 번호를 확인했습니다.");
System.out.println("1. 판매");
System.out.println("2. 취소");
System.out.println("최종 메세지 : ");
int ch = sc.nextInt();
switch (ch) {
case 1:
if(cdao.sellCar(cartype, carnum)) {
System.out.println("차량을 판매 했습니다.");
cdao.delreview(carnum);
cdao.deldealinfo(carnum);
cdao.delcar(cartype, carnum);
System.out.println("==== 판매된 차량은 삭제 ====");
System.out.println("등록한 차종을 삭제 했습니다.");
}
break;
case 2:
System.out.println("취소합니다.");
new Review();
break;
default:
System.out.println("잘못된 번호 입니다.");
break;
}
} else {
System.out.println("존재 하지 않는 차량번호 입니다.");
}
} else {
System.out.println("존재 하지 않는 차량입니다.");
}
} else{
System.out.println("구매 요청 중인 차량이 없습니다.");
}
} else {
System.out.println("등록하지 않은 차량입니다.");
}
} else if(choice == 6) {
System.out.println("찜하기로~");
// 찜하로 가는곳
new Dib();
}
}
}
● title, detail, carnum을 포장해주기 위해서 먼저 생성해주자!
package dto;
public class ReviewDTO {
private String title;
private String detail;
private int carnum;
// private String userid;
public ReviewDTO(String title, String detail, int carnum) {
this.title = title;
this.detail = detail;
this.carnum = carnum;
// this.userid = userid;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
public int getCarnum() {
return carnum;
}
public void setCarnum(int carnum) {
this.carnum = carnum;
}
}
● ReviewDTO에서 포장했던 것들을 여기서 받는다.
public boolean writePost(ReviewDTO rdto) {
String sql = "insert into review(title,detail,carnum,userid,registtime) "
+ "values(?,?,?,?,now())";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, rdto.getTitle());
ps.setString(2, rdto.getDetail());
ps.setInt(3, rdto.getCarnum());
ps.setString(4, Session.get("login_id"));
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("writePost 수행 실패! : " + sqle);
}
return false;
}
● 메세지를 보내기 위해서 구현
public boolean sendMsg(String msg, String name) {
String sql = "insert into message(send_id,msg,recieve_id,registtime) "
+ "values(?,?,?,now())";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
ps.setString(2, msg);
// name에서 회원가입되지 않은 아이디를 입력하면 오류가 발생한다.
// 그 이유는 message 테이블에서 recieve_id는 user 테이블에서
// userid를 fk해서 받아 왔기 때문에 참조하는 값은 일치해야 한다.
// userid는 Session에 put으로 아이디를 기록해놓기 떼문에
// 아이디를 잘못쓰면 무결성이 깨져서 오류가 발생한다.
// 뜨는 오류 : Cannot add or update a child row: a foreign key constraint fails
// (`project`.`message`, CONSTRAINT `message_fk`
FOREIGN KEY (`recieve_id`) REFERENCES `user` (`userid`))
ps.setString(3, name);
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("sengMsg 수행 실패! : " + sqle);
}
return false;
}
● 받은 쪽지를 확인하기 위해서 만든 메소드
public String msgConfirm() {
String sql = "select * from message where recieve_id=?";
try {
// 만들어논 다리를 이용(만들어 놓은 다리 위를 왔다갔다 할 택배차 만들기)
// prepareStatement 메소드에 우리가 시행하고자 할 sql문을 넘겨주면서 뽑아준다.
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
rs = ps.executeQuery();
if(rs.next()) {
String sid = rs.getString("send_id");
String msg = rs.getString("msg");
String rid = rs.getString("recieve_id");
System.out.println("=========== 쪽지함 ============");
System.out.println("보낸아이디 : " + sid + "\t받는아이디 : "
+ rid + "\n메세지 내용 : " + msg);
System.out.println("==============================");
}
} catch (SQLException sqle) {
System.out.println("MsgConfirm 수행 실패! : " + sqle);
}
return "쪽지가 없습니다.";
}
● 쪽지 삭제 기능을 위한 메소드
public void removeMsg() {
String sql = "delete from message where recieve_id=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
ps.executeUpdate();
} catch (SQLException sqle) {
System.out.println("removeMsg 수행 실패! : " + sqle);
}
}
● 차량정보를 보여주기 위해서 구현
public String carinfo() {
String sql = "select * from car";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
String ctype = rs.getString("cartype");
String dis = rs.getString("distance");
String pri = rs.getString("price");
String age = rs.getString("carage");
String option = rs.getString("caroption");
return "차종 : " + ctype + " /주행거리 : " + dis + " /가격 : " + pri +
" /차량연식 : " + age + " /차량옵션 : " + option;
}
} catch (SQLException sqle) {
System.out.println("carinfo 수행 실패! : " + sqle);
}
return null;
}
● 차량을 구매하기 위해서 구현
public String buycar(String cartype) {
String sql = "select * from car where cartype=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
rs = ps.executeQuery();
if(rs.next()) {
int cnum = rs.getInt("carnum");
String ctype = rs.getString("cartype");
String dis = rs.getString("distance");
String pri = rs.getString("price");
String age = rs.getString("carage");
String option = rs.getString("caroption");
return "차량번호 : " + cnum + "\t\t차종 : " + ctype + "\t\t주행거리 : " +
dis + "\t\t가격 : " + pri + "\t\t차량연식 : " + age + "\n차량옵션 : " + option;
}
} catch (SQLException sqle) {
System.out.println("buycar 수행 실패! : " + sqle);
}
return null;
}
● 마지막으로 구매한 차량에 대해 정보를 보여줌
public String checkcar2(String carnum) {
String sql = "select * from car where carnum=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, carnum);
rs = ps.executeQuery();
while(rs.next()) {
String cnum = rs.getString("carnum");
String ctype = rs.getString("cartype");
String dis = rs.getString("distance");
String pri = rs.getString("price");
String age = rs.getString("carage");
String option = rs.getString("caroption");
return "차량번호 : " + cnum + "\t\t차종 : " + ctype + "\t\t주행거리 : "
+ dis + "\t\t가격 : " + pri + "\t\t차량연식 : " + age + "\n차량옵션 : " + option;
}
} catch (SQLException sqle) {
System.out.println("checkcar(carnum)수행 실패! : " + sqle);
}
return null;
}
● 차량을 판매하기 위해서 그 차량이 있는지 확인하기 위한 메소드
// 검색전에 그 차가 있는지 체크하는 메소드
public boolean checkcar(String cartype) {
String sql = "select * from car where cartype=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
rs = ps.executeQuery();
// 중복된게 있어야 true가 되야하므로
// rs.next를 리턴
return rs.next();
} catch (SQLException sqle) {
System.out.println("checkcar 수행 실패! : " + sqle);
}
return false;
}
● 판매하기 위해서 carnum을 다시 체크
public boolean checkcarnum(String carnum) {
String sql = "select * from car where carnum=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, carnum);
rs = ps.executeQuery();
// 차량 번호가 있어야 판매가 가능하니
// 중복된게 있어야 true가 되야하므로
// rs.next를 리턴
return rs.next();
} catch (SQLException sqle) {
System.out.println("checkcarnum(carnum)수행 실패! : " + sqle);
}
return false;
}
● delreview, deldealinfo는 fk때문에 삭제해줘야 delcar을 할 수 있다.
public void delreview(String carnum) {
String sql="delete from review where carnum=? and userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, carnum);
ps.setString(2, Session.get("login_id"));
ps.executeUpdate();
} catch (SQLException sqle) {
System.out.println("delcar수행 실패! : " + sqle);
}
}
public void deldealinfo(String carnum) {
String sql="delete from dealinfo where carnum=? and userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, carnum);
ps.setString(2, Session.get("login_id"));
ps.executeUpdate();
} catch (SQLException sqle) {
System.out.println("delcar수행 실패! : " + sqle);
}
}
public void delcar(String cartype, String carnum) {
String sql="delete from car where cartype=? and carnum=? and userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
ps.setString(2, carnum);
ps.setString(3, Session.get("login_id"));
ps.executeUpdate();
} catch (SQLException sqle) {
System.out.println("delcar수행 실패! : " + sqle);
}
}
● 찜하기 클래스이다.
package view;
import java.util.Scanner;
import dao.CarDAO;
import dao.Session;
import dao.UserDAO;
public class Dib {
public Dib() {
Scanner sc = new Scanner(System.in);
CarDAO cdao = new CarDAO();
UserDAO udao = new UserDAO();
String cartype = "";
int choice = 0;
String userid="";
String carnum = "";
while(true) {
System.out.println("======== 찜하기 =========");
System.out.println("1. 차종으로 찜하기");
// System.out.println("2. 유저아이디로 찜하기");
System.out.println("번호를 고르세요 (종료:0)");
choice = sc.nextInt();
if(choice == 0) {
System.out.println("찜하기를 종료합니다.");
new MainView();
break;
} else if(choice == 1) {
System.out.println("찜하실 차종 입력 : ");
cartype = sc.next();
System.out.println("찜하실 차번호 입력 : ");
carnum = sc.next();
System.out.println("찜하실 아이디 입력 : ");
String name = sc.next();
if(cdao.checkcar(cartype, carnum)) {
System.out.println("존재하는 차량입니다.");
if(udao.dib_Car(cartype, carnum, name)) {
System.out.println("차량을 찜하셨습니다.");
} else {
System.out.println("찜하기 실패!");
}
} else {
System.out.println("존재하지 않는 차량입니다.");
}
// } else if(choice == 2) {
// System.out.print("찜하실 아이디 입력 : ");
// userid=sc.next();
// if(udao.checkId(userid)) {
// System.out.println("아이디가 존재합니다.");
// if(!(userid.equals(Session.get("login_id")))) {
//
// if(udao.dib_Userid(userid)) {
// System.out.println("아이디를 찜하셨습니다.");
// } else {
// System.out.println("아이디 찜하기 실패!!");
// }
// }
// } else {
// System.out.println("아이디가 존재하지 않습니다.");
// }
} else if(!(1 == choice)) {
System.out.println("메뉴를 잘못선택했습니다.(종료:0)");
continue;
}
}
}
}
● 차종이 있는지 확인
// 검색전에 그 차가 있는지 체크하는 메소드
public boolean checkcar(String cartype) {
String sql = "select * from car where cartype=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
rs = ps.executeQuery();
// 중복된게 있어야 true가 되야하므로
// rs.next를 리턴
return rs.next();
} catch (SQLException sqle) {
System.out.println("checkcar 수행 실패! : " + sqle);
}
return false;
}
● 차량을 찜하는 메소드
public boolean dib_Car(String cartype) {
String sql = "insert into wish_list (dib_car,userid,dib_time)"
+ "values(?,?,now())";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
ps.setString(2, Session.get("login_id"));
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("dib_Car 수행 실패! : " + sqle);
}
return false;
}
● 아이디가 있는지 확인하는 메소드
public boolean checkId(String userid) {
String sql = "select * from user where userid=?";
try {
// 만들어논 다리를 이용(만들어 놓은 다리 위를 왔다갔다 할 택배차 만들기)
// prepareStatement 메소드에 우리가 시행하고자 할 sql문을 넘겨주면서 뽑아준다.
ps = conn.prepareStatement(sql);
ps.setString(1, userid);
rs = ps.executeQuery();
// 찜할 아이디가 존재하는지 확인하는 메소드
// 그렇기 때문에 데이터베이스에 해당 아이디가 있어야 한다.
return rs.next();
} catch (SQLException sqle) {
System.out.println("checkId 수행 실패! : " + sqle);
}
return false;
}
● 아이디를 지정해서 찜할 수 있는 메소드
public boolean dib_Userid (String userid) {
String sql = "insert into wish_list (dib_userid,userid,dib_time)"
+ "values(?,?,now())";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, userid);
ps.setString(2, Session.get("login_id"));
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("dib_Car 수행 실패! : " + sqle);
}
return false;
}
● 내정보 수정하는 클래스
package view;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import dao.CarDAO;
import dao.ReviewDAO;
import dao.UserDAO;
import dto.UserDTO;
public class Modify_Myinfo {
public Modify_Myinfo() {
Scanner sc = new Scanner(System.in);
UserDAO udao = new UserDAO();
CarDAO cdao = new CarDAO();
ReviewDAO rdao = new ReviewDAO();
UserDTO udto = new UserDTO();
boolean condition = false;
System.out.println("1. 비밀번호 수정\n2. 핸드폰 번호 수정\n3. 주소 수정\n4. 뒤로가기\n5. 회원탈퇴");
int choice = sc.nextInt();
// 비밀번호 수정
if(choice == 1) {
System.out.print("비밀번호 입력 : ");
String userpw = sc.next();
if(udao.checkpw(userpw)) {
System.out.println("맞는 비밀번호입니다");
System.out.print("새로운 비밀번호 입력 : ");
String userpw2 = sc.next();
if(checkpw2(userpw2)){
// 원래 사용하던 비밀번호를 사용하지 못하게 조건문을 추가
if(!(userpw2.equals(userpw))) {
if(udao.modifypw(userpw2)) {
System.out.println("비밀번호 변경완료");
} else {
System.out.println("비밀번호 변경실패");
}
} else {
System.out.println("기존의 비밀번호를 사용할 수 없습니다.");
}
} else {
System.out.println("불가능한 비밀번호 입니다.");
}
} else {
System.out.println("틀린 비밀번호 입니다.");
}
// 휴대폰 번호 수정
} else if(choice == 2) {
System.out.print("새로운 핸드폰 번호 입력 :");
String userphone = sc.next();
condition = false;
for (int i = 0; i < userphone.length() ; i++) {
// System.out.println(userphone.charAt(i));
// 대문자 확인(아스키 코드)
char ch = userphone.charAt(i);
if(ch <= 90 && ch >= 65) {
// 대문자에 포함되면 false
condition = false;
System.out.println("대문자는 사용할 수 없습니다.");
new MainView();
// 그리고 나가짐
break;
// 대문자를 통과하면 소문자 검사!
} else if(ch >= 97 && ch <= 122) {
// 소문자면 false
condition = false;
System.out.println("소문자는 사용할 수 없습니다.");
new MainView();
break;
// 특문 있나 확인후 있으면 false
} else if(ch >= 33 && ch <= 47) {
condition = false;
System.out.println("특수문자는 사용할 수 없습니다.");
new MainView();
break;
} else if(ch == 0) {
condition = false;
System.out.println("NUL이라 안됩니다.");
new MainView();
break;
} else if(ch >= '0' && ch <= '9') {
condition = true;
}
}
// condition = true;
// 숫자가 11개거나 condition이 true이면 통과
if(userphone.length() ==11 && condition == true) {
if(udao.modifyphone(userphone)) {
System.out.println("핸드폰 번호 변경완료");
// UserDTO에 있는 메소드에 입력
udto.setUserphone(userphone);
} else {
System.out.println("핸드폰 번호 변경실패");
}
// condition이 false면
} else if(!condition) {
System.out.println("숫자만 입력하세요");
// 핸드폰 번호가 11가 아니면
} else if(userphone.length() != 11) {
System.out.println("전화번호는 11자리 입니다.");
} else {
System.out.println("오류가 발생했습니다.");
}
// 주소 수정
} else if(choice == 3) {
System.out.print("새로운 주소 입력 : ");
sc = new Scanner(System.in);
String useraddr = sc.nextLine();
if(udao.modifyaddr(useraddr)) {
System.out.println("주소 변경완료");
} else {
System.out.println("주소 변경실패");
}
// 뒤로 가기
} else if(choice == 4) {
System.out.println("메인으로 돌아갑니다");
new MainView();
// 회원 탈퇴
} else if(choice == 5) {
System.out.print("비밀번호 입력 : ");
String userpw = sc.next();
if(udao.checkpw(userpw)) {
System.out.println("맞는 비밀번호입니다");
// 게시글 삭제
rdao.removeAll();
// 차량 등록한거 전부 삭제
cdao.removeAll();
// 그후에 유저 아이디 삭제
if(udao.userdel()) {
System.out.println("=========== 회원탈퇴 성공 ============");
// 자바에서 프로그램 종료
// 0이면 정상종료
// 1이면 비정상종료
Index.main(null);
}
}
else {
System.out.println("잘못 입력하셨습니다.");
}
}
}
//소문자,대문자, 0~9 숫자, 특수문자 8자리 이상!
public boolean checkpw2(String userpw) {
String passwordPolicy = "^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[$@$!%*#?&])[A-Za-z[0-9]$@$!%*#?&]{8,20}$";
Pattern pattern_pwd = Pattern.compile(passwordPolicy);
Matcher matcher_pwd = pattern_pwd.matcher(userpw);
return matcher_pwd.matches();
}
}
● 폰번호를 바꾸기 위한 메소드
public boolean modifyphone(String userphone) {
String sql = "update user set userphone = ? where userid = ?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, userphone);
// 애초에 로그인한 사람의 아이디가 필요할 때는 매개변수로 따로 받아오지 않고
// 세션에 세팅되어 있는 것을 사용
ps.setString(2, Session.get("login_id"));
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("modifyphone 수행 실패! : " + sqle);
}
return false;
}
● 주소를 바꾸는 메소드
public boolean modifyaddr(String useraddr) {
String sql = "update user set useraddr = ? where userid = ?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, useraddr);
// 애초에 로그인한 사람의 아이디가 필요할 때는 매개변수로 따로 받아오지 않고
// 세션에 세팅되어 있는 것을 사용
ps.setString(2, Session.get("login_id"));
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("modifyaddr 수행 실패! : " + sqle);
}
return false;
}
● 회원 탈퇴를 위한 메소드
● 회원 탈퇴전에 글쓴것들 삭제
public void removeAll() {
String sql = "delete from review where userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
ps.executeUpdate();
} catch (SQLException sqle) {
System.out.println("removeAll 수행 실패! : " + sqle);
}
}
● 회원 탈퇴를 위한 메소드
● 회원 탈퇴전에 차량 정보 삭제
public void removeAll() {
String sql = "delete from car where userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
ps.executeUpdate();
} catch (SQLException sqle) {
System.out.println("removeAll 수행 실패! : " + sqle);
}
}
● dao에 생성해 준다.
● 아이디에 대한 정보가 담겨있다.
● 로그인할때 put으로 보내주고 Hashmap으로 여기에 저장한다.
package dao;
import java.util.HashMap;
// 아이디 데이터 가지고 있는 공간
public class Session {
//Session.datas.put("login_id","apple");
private static HashMap<String, String> datas = new HashMap<String, String>();
//Session.put("login_id","apple");
public static void put(String key, String value) {
datas.put(key, value);
}
public static String get(String key) {
return datas.get(key);
}
}
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import dto.UserDTO;
public class UserDAO {
// 밖에서 사용하지 않고 내부에서 사용할꺼니까 private 써야한다.
private Connection conn;
private PreparedStatement ps;
private ResultSet rs;
// 다리 만들기
public UserDAO() {
conn = DBConnection.getConnection();
}
// JoinView클래스에 있는 중복검사 메소드 기능 구현
public boolean checkDup(String userid) {
String sql = "select * from user where userid=?";
try {
// 만들어논 다리를 이용(만들어 놓은 다리 위를 왔다갔다 할 택배차 만들기)
// prepareStatement 메소드에 우리가 시행하고자 할 sql문을 넘겨주면서 뽑아준다.
ps = conn.prepareStatement(sql);
ps.setString(1, userid);
rs = ps.executeQuery();
// 회원가입 전에 검사하는 거니까
// 중복된게 없어야 true가 되야므로 !rs.next 리턴
return !rs.next();
} catch (SQLException sqle) {
System.out.println("checkDup 수행 실패! : " + sqle);
}
return false;
}
// 비밀번호를 재입력받는 거기 때문에 기존에 비밀번호가 있어야 한다.
public boolean checkpw(String userpw) {
String sql = "select * from user where userpw=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, userpw);
// 만들어놓은 쿼리문을 수행
rs = ps.executeQuery();
// 그럼 select문 같은 경우엔 검색된 결과가 있어서 어떤 테이블 형태의 검색결과물이 나오던가
// 혹은 검색된 결과가 없으니 컬럼명만 나온다.
// 이거는 워크벤치에서 수행했을 때 결과창을 보면 알 수 있다.
// 그 때 검색된 결과물이 있다면 rs.next()로 첫번째 행부터 하나씩 이동시킬 수 있고
// rs.next()를 쓰면 첫번째 행을 가리키고 그곳에 검색된 결과가 있으면 true, 아니면 false
// 검색결과가 있는지 확인하려면 그냥 rs.next()를 리턴해야 한다.
// 그래서 아이디 중복체크같은 경우는 검색결과가 없어서 true니까 !rs.next()인데
// 지금 같은 경우에는 존재하는지 확인해야 하므로 그대로 rs.next()로 리턴하는게 맞다.
// 비밀번호를 체크하는거니까 기존에 있어야 true
return rs.next();
} catch (SQLException sqle) {
System.out.println("checkpw 수행 실패! : " + sqle);
}
return false;
}
// JoinView클래스에 있는 회원가입 메소드 기능 구현
public boolean join(UserDTO user) {
// values(?,?,?,?,?,?)에서 ?는 (userid,userpw,username,userphone,useraddr)
// 값들이다.
String sql = "insert into user (userid,userpw,username,userphone,useraddr) "
+ "values(?,?,?,?,?)";
System.out.println(user.toString());
try {
ps = conn.prepareStatement(sql);
ps.setString(1, user.getUserid());
ps.setString(2, user.getUserpw());
ps.setString(3, user.getUsername());
ps.setString(4, user.getUserphone());
ps.setString(5, user.getUseraddr());
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("join sql 실패! : " + sqle);
}
return false;
}
// LoginView에서 매개변수를 받아와서 로그인 기능 구현
public boolean login(String userid, String userpw) {
String sql = "select * from user where userid =? and userpw=?";
try {
ps =conn.prepareStatement(sql);
ps.setString(1, userid);
ps.setString(2, userpw);
rs = ps.executeQuery();
if(rs.next()) {
// Session 클래스에 hashmap으로 아이디 데이터 기록해서
// put으로 저장하고 get으로 가져올 수 있게 구성
Session.put("login_id", userid);
return true;
}
} catch (SQLException sqle) {
System.out.println("login 수행 실패! : " + sqle);
}
return false;
}
public String myInfo() {
String sql = "select * from user where userid =?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
rs = ps.executeQuery();
// userid가 같은 행을 찾으면 하나만 나온다.
// rs.next()는 검색결과에서 행을 아래로 하나 이동하며 그 이동한 곳에
// 행이 있으면 true입니다.
if(rs.next()) {
String id = rs.getString("userid");
String name = rs.getString("username");
String phonenum = rs.getString("userphone");
String addr = rs.getString("useraddr");
return "아이디 : " + id + "\n이름 : " + name +
"\n핸드폰 번호 : " + phonenum + "\n주소 : " + addr;
}
} catch (SQLException sqle) {
System.out.println("MyInfo 수행 실패! : " + sqle);
}
return null;
}
public boolean modifypw(String userpw2) {
String sql = "update user set userpw = ? where userid = ?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, userpw2);
ps.setString(2, Session.get("login_id"));
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("modifypw 수행 실패! : " + sqle);
}
return false;
}
public boolean modifyphone(String userphone) {
String sql = "update user set userphone = ? where userid = ?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, userphone);
// 애초에 로그인한 사람의 아이디가 필요할 때는 매개변수로 따로 받아오지 않고
// 세션에 세팅되어 있는 것을 사용
ps.setString(2, Session.get("login_id"));
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("modifyphone 수행 실패! : " + sqle);
}
return false;
}
public boolean modifyaddr(String useraddr) {
String sql = "update user set useraddr = ? where userid = ?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, useraddr);
// 애초에 로그인한 사람의 아이디가 필요할 때는 매개변수로 따로 받아오지 않고
// 세션에 세팅되어 있는 것을 사용
ps.setString(2, Session.get("login_id"));
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("modifyaddr 수행 실패! : " + sqle);
}
return false;
}
public boolean userdel() {
String sql = "delete from user where userid=?";
try {
ps = conn.prepareStatement(sql);
// 애초에 로그인한 사람의 아이디가 필요할 때는 매개변수로 따로 받아오지 않고
// 세션에 세팅되어 있는 것을 사용
ps.setString(1, Session.get("login_id"));
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("userdel 수행 실패! : " + sqle);
}
return false;
}
// 차종, 차번호를 받아서 wish_list에 추가한다.
public boolean dib_Car(String cartype, String carnum, String name) {
String sql = "insert into wish_list (dib_car,dib_carnum,dib_userid,userid,dib_time)"
+ "values(?,?,?,?,now())";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
ps.setString(2, carnum);
ps.setString(3, name);
ps.setString(4, Session.get("login_id"));
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("dib_Car 수행 실패! : " + sqle);
}
return false;
}
// public boolean dib_Userid (String userid) {
// String sql = "insert into wish_list (dib_userid,userid,dib_time)"
// + "values(?,?,now())";
//
// try {
// ps = conn.prepareStatement(sql);
// ps.setString(1, userid);
// ps.setString(2, Session.get("login_id"));
//
// return ps.executeUpdate() == 1;
//
// } catch (SQLException sqle) {
// System.out.println("dib_Car 수행 실패! : " + sqle);
// }
// return false;
// }
//
// public boolean checkId(String userid) {
// String sql = "select * from user where userid=?";
// try {
// // 만들어논 다리를 이용(만들어 놓은 다리 위를 왔다갔다 할 택배차 만들기)
// // prepareStatement 메소드에 우리가 시행하고자 할 sql문을 넘겨주면서 뽑아준다.
// ps = conn.prepareStatement(sql);
// ps.setString(1, userid);
//
// rs = ps.executeQuery();
//
// // 찜할 아이디가 존재하는지 확인하는 메소드
// // 그렇기 때문에 데이터베이스에 해당 아이디가 있어야 한다.
// return rs.next();
// } catch (SQLException sqle) {
// System.out.println("checkId 수행 실패! : " + sqle);
// }
// return false;
// }
public String viewDib() {
String sql = "select * from wish_list where userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
rs = ps.executeQuery();
while(rs.next()) {
String car = rs.getString("dib_car");
String num = rs.getString("dib_carnum");
String name = rs.getString("dib_userid");
System.out.println("\n\t찜한 차종 : " + car + "\n\t찜한 차번호 : " + num + "\n\t찜한 아이디 : " + name);
}
// } catch(NullPointerException sqle) {
// System.out.println("null에러 잡자");
}
catch (SQLException sqle) {
System.out.println("viewDib 수행 실패! : " + sqle);
}
return "찜한 목록이 없네요";
}
public boolean saleIdck(String cartype) {
String sql = "select * from car where userid=? and cartype = ?";
try {
// 만들어논 다리를 이용(만들어 놓은 다리 위를 왔다갔다 할 택배차 만들기)
// prepareStatement 메소드에 우리가 시행하고자 할 sql문을 넘겨주면서 뽑아준다.
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
ps.setString(2, cartype);
rs = ps.executeQuery();
// 찜할 아이디가 존재하는지 확인하는 메소드
// 그렇기 때문에 데이터베이스에 해당 아이디가 있어야 한다.
return rs.next();
} catch (SQLException sqle) {
System.out.println("saleIdck수행 실패! : " + sqle);
}
return false;
}
public boolean buyIdck(String cartype) { // 추가
String sql = "select * from car where userid=? and cartype =?";
try {
// 만들어논 다리를 이용(만들어 놓은 다리 위를 왔다갔다 할 택배차 만들기)
// prepareStatement 메소드에 우리가 시행하고자 할 sql문을 넘겨주면서 뽑아준다.
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
ps.setString(2, cartype);
rs = ps.executeQuery();
// 구매 전 동알한 아이디로 구매 불가에 검사하는 거니까
// 중복된게 없어야 true가 되야므로 !rs.next 리턴
return !rs.next();
} catch (SQLException sqle) {
System.out.println("butIdck 수행 실패! : " + sqle);
}
return false;
}
}
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.cj.jdbc.result.ResultSetMetaData;
import dto.CarDTO;
public class CarDAO {
private Connection conn;
private PreparedStatement ps;
private ResultSet rs;
public CarDAO() {
conn = DBConnection.getConnection();
}
// 체크 후 차종이 있으면 검색하는 메소드
public String searchCar(String cartype) {
String sql = "select * from car where cartype=?";
try {
// 만들어논 다리를 이용(만들어 놓은 다리 위를 왔다갔다 할 택배차 만들기)
// prepareStatement 메소드에 우리가 시행하고자 할 sql문을 넘겨주면서 뽑아준다.
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
rs = ps.executeQuery();
// rs.next() : 검색된 결과에서 행을 하나 이동시키며 이동된 곳에 존재한다면 true, 아니라면 false
while(rs.next()) {
// 컬럼명을 작성해주면 가리키고 있는 행의 해당 컬럼값을 가지고 온다.
String ctype = rs.getString("cartype");
String dis = rs.getString("distance");
String pri = rs.getString("price");
String age = rs.getString("carage");
String option = rs.getString("caroption");
// return "차종 : " + ctype + "\n주행거리 : " + dis + "\n가격 : " + pri +
// "\n차량연식 : " + age + "\n차량옵션 : " + option;
System.out.println("차종 : " + ctype + "\n주행거리 : " + dis + "\n가격 : " + pri +
"\n차량연식 : " + age + "\n차량옵션 : " + option);
}
} catch (SQLException sqle) {
System.out.println("searchCar 수행 실패! : " + sqle);
}
return "더이상 차량 정보가 없습니다.";
}
public String carinfo() {
String sql = "select * from car";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
String ctype = rs.getString("cartype");
String dis = rs.getString("distance");
String pri = rs.getString("price");
String age = rs.getString("carage");
String option = rs.getString("caroption");
// return "차종 : " + ctype + " /주행거리 : " + dis + " /가격 : " + pri +
// " /차량연식 : " + age + " /차량옵션 : " + option;
System.out.println("차종 : " + ctype + "\n주행거리 : " + dis + "\n가격 : " + pri +
"\n차량연식 : " + age + "\n차량옵션 : " + option);
}
} catch (SQLException sqle) {
System.out.println("carinfo 수행 실패! : " + sqle);
}
return "더이상 차량정보가 없습니다.";
}
// 검색전에 그 차가 있는지 체크하는 메소드
public boolean checkcar(String cartype) {
String sql = "select * from car where cartype=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
rs = ps.executeQuery();
// 중복된게 있어야 true가 되야하므로
// rs.next를 리턴
return rs.next();
} catch (SQLException sqle) {
System.out.println("checkcar 수행 실패! : " + sqle);
}
return false;
}
public boolean joincar(CarDTO car) {
// 헷갈릴 까봐 그냥 전부 적어놈
String sql = "insert into car (carnum,cartype,distance,price,carage,caroption,userid)"
+ "values(?,?,?,?,?,?,?)";
try {
ps= conn.prepareStatement(sql);
ps.setString(1, car.getCarnum());
ps.setString(2, car.getCartype());
ps.setString(3, car.getDistance());
ps.setString(4, car.getPrice());
ps.setString(5, car.getCarage());
ps.setString(6, car.getCaroption());
ps.setString(7, Session.get("login_id"));
// carnum이 동일하지 않는한 등록은 다 가능
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("joincar 수행 실패! : " + sqle);
}
return false;
}
public boolean checkcar1(String carnum) {
String sql = "select * from car where carnum=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, carnum);
rs = ps.executeQuery();
// 차량 번호가 없어야 넣을 수 있는 기능이니
// 중복된게 없어야 true가 되야하므로
// !rs.next를 리턴
return !rs.next();
} catch (SQLException sqle) {
System.out.println("checkcar(carnum)수행 실패! : " + sqle);
}
return false;
}
public boolean checkcarnum(String carnum) {
String sql = "select * from car where carnum=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, carnum);
rs = ps.executeQuery();
// 차량 번호가 있어야 판매가 가능하니
// 중복된게 있어야 true가 되야하므로
// rs.next를 리턴
return rs.next();
} catch (SQLException sqle) {
System.out.println("checkcarnum(carnum)수행 실패! : " + sqle);
}
return false;
}
public void removeAll() {
String sql = "delete from car where userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
ps.executeUpdate();
} catch (SQLException sqle) {
System.out.println("removeAll 수행 실패! : " + sqle);
}
}
public String buycar(String cartype) {
String sql = "select * from car where cartype=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
rs = ps.executeQuery();
if(rs.next()) {
int cnum = rs.getInt("carnum");
String ctype = rs.getString("cartype");
String dis = rs.getString("distance");
String pri = rs.getString("price");
String age = rs.getString("carage");
String option = rs.getString("caroption");
return "차량번호 : " + cnum + "\t\t차종 : " + ctype + "\t\t주행거리 : " + dis + "\t\t가격 : " + pri + "\t\t차량연식 : " + age + "\n차량옵션 : " + option;
}
} catch (SQLException sqle) {
System.out.println("buycar 수행 실패! : " + sqle);
}
return null;
}
public String checkcar2(String carnum) {
String sql = "select * from car where carnum=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, carnum);
rs = ps.executeQuery();
while(rs.next()) {
String cnum = rs.getString("carnum");
String ctype = rs.getString("cartype");
String dis = rs.getString("distance");
String pri = rs.getString("price");
String age = rs.getString("carage");
String option = rs.getString("caroption");
System.out.println("차량번호 : " + cnum + "\t\t차종 : " + ctype + "\t\t주행거리 : " + dis + "\t\t가격 : " + pri + "\t\t차량연식 : " + age + "\n차량옵션 : " + option;);
}
} catch (SQLException sqle) {
System.out.println("checkcar2 수행 실패! : " + sqle);
}
return null;
}
public boolean sellCar(String cartype,String carnum) {
String sql ="select * from car where cartype=? and carnum=? and userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
ps.setString(2, carnum);
ps.setString(3, Session.get("login_id"));
rs = ps.executeQuery();
return rs.next();
} catch (SQLException sqle) {
System.out.println("sellCar수행 실패! : " + sqle);
}
return false;
}
public void deldealinfo(String carnum) {
String sql="delete from dealinfo where carnum=? and userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, carnum);
ps.setString(2, Session.get("login_id"));
ps.executeUpdate();
} catch (SQLException sqle) {
System.out.println("deldealinfo수행 실패! : " + sqle);
}
}
public void delreview(String carnum) {
String sql="delete from review where carnum=? and userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, carnum);
ps.setString(2, Session.get("login_id"));
ps.executeUpdate();
} catch (SQLException sqle) {
System.out.println("delreview수행 실패! : " + sqle);
}
}
public void delcar(String cartype, String carnum) {
String sql="delete from car where cartype=? and carnum=? and userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
ps.setString(2, carnum);
ps.setString(3, Session.get("login_id"));
ps.executeUpdate();
} catch (SQLException sqle) {
System.out.println("delcar수행 실패! : " + sqle);
}
}
public boolean carDeal(CarDTO car) { // 추가
String sql = "insert into dealinfo (carnum,userid,registtime)"
+ "values(?,?,now())";
try {
ps= conn.prepareStatement(sql);
ps.setString(1, car.getCarnum());
ps.setString(2, Session.get("login_id"));
// carnum이 동일하지 않는한 등록은 다 가능
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("carDeal 수행 실패! : " + sqle);
}
return false;
}
public boolean registDeal(String carnum) { //추가
// 구매할 때 dealinfo 테이블에 "구매 요청"이라는 문구를 업데이트
String sql = "update dealinfo set tradestatus = \"구매 요청\" where carnum = ?";
try {
ps= conn.prepareStatement(sql);
ps.setString(1, carnum);
// ps.setString(2, Session.get("login_id"));
// carnum이 동일하지 않는한 등록은 다 가능
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("registDeal 수행 실패! : " + sqle);
}
return false;
}
public String tradeStatusck() { // 추가
String sql ="select * from dealinfo where userid = ?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
rs = ps.executeQuery();
if(rs.next()) {
int tnum = rs.getInt("tradenum");
String tstatus = rs.getString("tradestatus");
String rgtime = rs.getString("registtime");
String cnum = rs.getString("carnum");
String uid = rs.getString("userid");
// tradestatus에서 "구매 요청"이라면 여기서 비교해서 같으니까 true
if(tstatus.equals("구매 요청")) {
return "거래번호 : " + tnum + "\t\t거래상태 : "
+ tstatus + "\t\t등록시간 : " + rgtime + "\t\t차량번호 : "
+ cnum + "\t\t아이디 : " + uid;
} else {
return null;
}
}
} catch (SQLException sqle) {
System.out.println("tradStatusck수행 실패! : " + sqle);
}
return null;
}
// 차종하고 차번호를 입력받아서 찜하기전에 존재하는지 확인
public boolean checkcar(String cartype, String carnum) {
String sql = "select * from car where cartype=? and carnum=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, cartype);
ps.setString(2, carnum);
rs = ps.executeQuery();
// 중복된게 있어야 true가 되야하므로
// rs.next를 리턴
return rs.next();
} catch (SQLException sqle) {
System.out.println("checkcar 수행 실패! : " + sqle);
}
return false;
}
}
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import dto.ReviewDTO;
public class ReviewDAO {
private Connection conn;
private PreparedStatement ps;
private ResultSet rs;
public ReviewDAO() {
conn = DBConnection.getConnection();
}
public boolean writePost(ReviewDTO rdto) {
String sql = "insert into review(title,detail,carnum,userid,registtime) "
+ "values(?,?,?,?,now())";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, rdto.getTitle());
ps.setString(2, rdto.getDetail());
ps.setInt(3, rdto.getCarnum());
ps.setString(4, Session.get("login_id"));
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("writePost 수행 실패! : " + sqle);
}
return false;
}
public boolean sendMsg(String msg, String name) {
String sql = "insert into message(send_id,msg,recieve_id,registtime) "
+ "values(?,?,?,now())";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
ps.setString(2, msg);
// name에서 회원가입되지 않은 아이디를 입력하면 오류가 발생한다.
// 그 이유는 message 테이블에서 recieve_id는 user 테이블에서
// userid를 fk해서 받아 왔기 때문에 참조하는 값은 일치해야 한다.
// userid는 Session에 put으로 아이디를 기록해놓기 떼문에
// 아이디를 잘못쓰면 무결성이 깨져서 오류가 발생한다.
// 뜨는 오류 : Cannot add or update a child row: a foreign key constraint fails
// (`project`.`message`, CONSTRAINT `message_fk` FOREIGN KEY (`recieve_id`) REFERENCES `user` (`userid`))
ps.setString(3, name);
return ps.executeUpdate() == 1;
} catch (SQLException sqle) {
System.out.println("sengMsg 수행 실패! : " + sqle);
}
return false;
}
public String msgConfirm() {
String sql = "select * from message where recieve_id=?";
try {
// 만들어논 다리를 이용(만들어 놓은 다리 위를 왔다갔다 할 택배차 만들기)
// prepareStatement 메소드에 우리가 시행하고자 할 sql문을 넘겨주면서 뽑아준다.
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
rs = ps.executeQuery();
while(rs.next()) {
String sid = rs.getString("send_id");
String msg = rs.getString("msg");
String rid = rs.getString("recieve_id");
System.out.println("=========== 쪽지함 ============");
System.out.println("보낸아이디 : " + sid + "\t받는아이디 : "
+ rid + "\n메세지 내용 : " + msg);
System.out.println("==============================");
}
} catch (SQLException sqle) {
System.out.println("MsgConfirm 수행 실패! : " + sqle);
}
return "쪽지가 없습니다.";
}
public void removeMsg() {
String sql = "delete from message where recieve_id=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
ps.executeUpdate();
} catch (SQLException sqle) {
System.out.println("removeMsg 수행 실패! : " + sqle);
}
}
public void removeAll() {
String sql = "delete from review where userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, Session.get("login_id"));
ps.executeUpdate();
} catch (SQLException sqle) {
System.out.println("removeAll 수행 실패! : " + sqle);
}
}
}