반응형
목차
1. 복습하기
2. 배우기
1.복습하기
--사용자 테이블 만들기
CREATE TABLE USERS(
ID VARCHAR(20) NOT NULL PRIMARY KEY,
UNAME VARCHAR(20) NOT NULL,
POINT INT DEFAULT 0,
PHONE VARCHAR(20)
);
DESC USERS;
CREATE TABLE MESSAGES(
MID INT NOT NULL PRIMARY KEY,
SENDER VARCHAR(20) NOT NULL,
RECEIVER VARCHAR(20) NOT NULL,
SDATE DATE DEFAULT SYSDATE,
MESSAGE VARCHAR(1000) NOT NULL,
FOREIGN KEY(SENDER) REFERENCES USERS(ID),
FOREIGN KEY(RECEIVER) REFERENCES USERS(ID)
);
--사용자입력
INSERT INTO USERS(ID,UNAME,POINT,PHONE)
VALUES('blue','이블루','20','010-1010-1010');
INSERT INTO USERS(ID,UNAME,POINT,PHONE)
VALUES('red','박레드','10','010-1010-2020');
INSERT INTO USERS(ID,UNAME,POINT,PHONE)
VALUES('green','최그린','10','010-1010-3030');
DELETE FROM USERS;
SELECT * FROM USERS;
--메시지번호 시퀀스생성
CREATE SEQUENCE SEQ_MID START WITH 1 INCREMENT BY 1;
--메시지입력
INSERT INTO MESSAGES(MID,SENDER,RECEIVER,SDATE,MESSAGE)
VALUES(SEQ_MID.NEXTVAL,'blue','red',sysdate,'레드야 잘 지내지?');
INSERT INTO MESSAGES(MID,SENDER,RECEIVER,SDATE,MESSAGE)
VALUES(SEQ_MID.NEXTVAL,'red','blue',sysdate,'블루야 오랜만이야!');
INSERT INTO MESSAGES(MID,SENDER,RECEIVER,SDATE,MESSAGE)
VALUES(SEQ_MID.NEXTVAL,'green','blue',sysdate,'폭우 조심해!');
INSERT INTO MESSAGES(MID,SENDER,RECEIVER,SDATE,MESSAGE)
VALUES(SEQ_MID.NEXTVAL,'blue','green',sysdate, '고마워 조심할게');
commit;
select * from messages;
--블루가 보낸 메시지 찾기
SELECT M.*,U.UNAME,PHONE FROM MESSAGES M, USERS U WHERE SENDER = 'blue' AND U.ID=M.RECEIVER;
--블루가 받은 메시지 보기
SELECT M.*, UNAME,PHONE
FROM MESSAGES M, USERS U
WHERE RECEIVER='blue' AND SENDER = ID;
테이블을 2개 만들었다. 메시지 전송내역, 계정내역이다.
위의 SQL문을 이용한 자바코드는 다음과 같다.
package ex09;
import java.awt.print.Printable;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
UserDAO udao = new UserDAO();
boolean run = true;
while (run) {
System.out.println("\n\n******* 메시지관리 **************************************");
System.out.println("------------------------------------------------------");
System.out.println("|1.사용자목록|2.사용자조회|3.사용자수정|4.사용자등록|5.사용자삭제|0.종료|");
System.out.println("------------------------------------------------------");
System.out.print("선택>");
String menu = s.nextLine();
switch (menu) {
case "0":
System.out.println("시스템 종료!");
run = false;
break;
case "1":
System.out.println("Id\t이름\t전화번호\t\t포인트");
System.out.println("--------------------------------------------");
for (UserVO vo : udao.list()) {
System.out.printf("%s\t%s\t%s\t%d\n", vo.getId(), vo.getUname(), vo.getPhone(), vo.getPoint());
}
System.out.println(udao.list().size() + "명 등록되었습니다.");
break;
case "2":
System.out.print("조회할아이디>");
String id = s.nextLine();
if (id == "") {
System.out.println("조회를 종료합니다.");
break;
} else {
UserVO uvo = udao.read(id);
if (uvo.getUname() == null) {
System.out.println("사용자가 존재하지 않습니다.");
} else {
System.out.println("사용자이름:" + uvo.getUname());
System.out.println("사용자전화:" + uvo.getPhone());
System.out.println("사용자포인트:" + uvo.getPoint());
}
}
break;
case "3":
System.out.println("수정할 아이디");
id = s.nextLine();
if (id == "") {
System.out.println("수정종료!");
} else {
UserVO uvo = udao.read(id);
if (uvo.getUname() == "") {
System.out.println("사용자가 존재하지 않습니다.");
} else {
System.out.println("이름:" + uvo.getUname() + ">");
String uname = s.nextLine();
if (uname != "")
uvo.setUname(uname);
System.out.println("전화:" + uvo.getPhone() + ">");
String phone = s.nextLine();
if (phone != "")
uvo.setPhone(phone);
System.out.println(uvo.toString());
System.out.println("수정하실래요?(Y/y)");
String sel = s.nextLine();
if (sel.equals("Y") || sel.equals("y") || sel.equals("ㅛ")) {
udao.update(uvo);
System.out.println("수정이 완료되었습니다.");
} else {
System.out.println("수정이 취소되었습니다.");
}
}
}
break;
case "4":
System.out.println("회원가입을 진행합니다.");
while (true) {
System.out.print("아이디입력>");
id = s.nextLine();
if (id == "") {
System.out.println("등록을 취소합니다.");
break;
} else {
UserVO uvo = udao.read(id);
if (uvo.getUname() == null) {
System.out.print("이름입력>");
String sname = s.nextLine();
if (sname == "") {
System.out.println("이름은 반드시 입력해야 합니다.");
break;
} else {
uvo.setUname(sname);
uvo.setId(id);
System.out.print("전화번호입력>");
String phone = s.nextLine();
uvo.setPhone(phone);
System.out.println(uvo.toString());
System.out.println("등록하실래요?(Y/y)");
String sel = s.nextLine();
if (sel.equals("Y") || sel.equals("y") || sel.equals("ㅛ")) {
udao.insert(uvo);
System.out.println("등록이완료되었습니다.");
} else {
System.out.println("등록이취소되었습니다.");
}
}
break;
} else {
System.out.println("사용중인 아이디입니다.");
}
}
}
break;
case "5":
System.out.print("삭제할아이디입력>");
id = s.nextLine();
if (id == "") {
System.out.println("삭제를 취소합니다.");
} else {
UserVO uvo = udao.read(id);
if (uvo.getUname() == null) {
System.out.println("사용자가 존재하지 않습니다.");
} else {
System.out.println("사용자이름 " + uvo.getUname());
System.out.print("삭제하실래요?(Y/y)>");
String sel = s.nextLine();
if (sel.equals("Y") || sel.equals("y") || sel.equals("ㅛ")) {
try {
udao.delete(id);
System.out.println("삭제가 완료되었습니다.");
} catch (Exception e) {
System.out.println("사용자 삭제를 실패했습니다.");
}
}
}
}
break;
default:
System.out.println("메뉴를 다시 선택해 주세요.");
}// switch
} // while
}// main
}// Main
메인코드
아직 구현중인
UserVO,
UserDAO
package ex09;
public class UserVO {
private String id;
private String uname;
private int point;
private String phone;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "UserVO [id=" + id + ", uname=" + uname + ", point=" + point + ", phone=" + phone + "]";
}
}
package ex09;
import java.sql.*;
import java.util.*;
public class UserDAO {
//DATABASE ACCESS OBJECT
Connection con = Database.connect();
//사용자 삭제하기
public void delete(String uid)throws Exception {
String sql = "DELETE FROM USERS WHERE Id =?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, uid);
ps.execute();
}
//사용자 등록
public void insert(UserVO vo) {
try {
String sql = "INSERT INTO USERS(ID,UNAME,PHONE)"
+ "VALUES(?,?,?)";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, vo.getId());
ps.setString(2, vo.getUname());
ps.setString(3, vo.getPhone());
ps.execute();
}catch(Exception e) {
System.out.println("등록오류"+e.toString());
}
}
//사용자수정
public void update(UserVO vo) {
try {
String sql = "UPDATE USERS SET UNAME=?,PHONE=? WHERE ID=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, vo.getUname());
ps.setString(2, vo.getPhone());
ps.setString(3, vo.getId());
ps.execute();
}catch(Exception e) {
System.out.println("수정오류"+e.toString());
}
}
// 사용자조회
public UserVO read(String uid) {
UserVO vo = new UserVO();
try {
String sql = "SELECT * FROM USERS WHERE ID = ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, uid);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
vo.setId(rs.getString("id"));
vo.setUname(rs.getString("uname"));
vo.setPoint(rs.getInt("point"));
vo.setPhone(rs.getString("phone"));
}
} catch (Exception e) {
System.out.println("사용자조회오류" + e.toString());
}
return vo;
}
// 목록출력
public List<UserVO> list() {
List<UserVO> array = new ArrayList<UserVO>();
try {
String sql = "SELECT * FROM USERS";
PreparedStatement ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
UserVO vo = new UserVO();
vo.setId(rs.getString("id"));
vo.setUname(rs.getString("uname"));
vo.setPoint(rs.getInt("point"));
vo.setPhone(rs.getString("phone"));
array.add(vo);
}
} catch (Exception e) {
System.out.println("사용자목록오류" + e.toString());
}
return array;
}
}
이제 어느정도 객체에 대해서는 안것 같다.. 하지만 아직 상속? 이런건 무슨말인지 잘 모른다.
차근차근 내가 할 수 있는것부터 해나가는게 좋겠다. 위코드는 data에 접속하여 읽고 쓰고 수정하고 지우는
curd
create
update
read
delete를 전부 할 수 있는 메서드이다.
기억해야 할 것은,
2. 배우기
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
2023-07-04 학습일지 git (0) | 2023.07.04 |
---|---|
2023-07-03 수업일지 (0) | 2023.07.03 |
2023-06-29 수업일지 (0) | 2023.06.29 |
2023-06-28 학습일지 (0) | 2023.06.29 |
2023-06-27 학습일지 (0) | 2023.06.28 |