본문 바로가기
수업시간 JAVA/문제

INSERT / SELECT / UPDATE / DELETE 프로그램 만들기

by SEOKIHOUSE 2023. 4. 13.
package practice0413;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Scanner;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
class Member {
	int mno;
	String name;
	String phone;
	String id;
	String password;
}

public class PreparedSelectInsert {

	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		final String driver = "org.mariadb.jdbc.Driver";
		final String url = "jdbc:mariadb://localhost:3306/green01";
		final String uid = "root";
		final String upw = "1234";

		Class.forName(driver);
		Connection conn = DriverManager.getConnection(url, uid, upw);

		while (true) {
			System.out.print("1.SELECT 2. INSERT 3. UPDATE 4. DELETE 5.EXIT");
			int choose = sc.nextInt();
			if (choose == 1) {
				String query = "SELECT * FROM member";
				PreparedStatement stmt = conn.prepareStatement(query);
				ResultSet rs = stmt.executeQuery();
				ArrayList<Member> ar = new ArrayList<>();

				while (rs.next()) {
					int mno = rs.getInt("mno");
					String name = rs.getString("name");
					String phone = rs.getString("phone");
					String id = rs.getString("id");
					String password = rs.getString("password");
					Member m = new Member(mno, name, phone, id, password);
					ar.add(m);
				}
				for (Member m1 : ar) {
					System.out.println(m1);
				}
			} else if (choose == 2) {
				while (true) {
					String query = "INSERT INTO member (name,phone,id,password) VALUES (?,?,?,?)";
					PreparedStatement stmt = conn.prepareStatement(query);
					System.out.print("추가할 이름을 적으셈");
					String name = sc.next();
					System.out.print("추가할 번호를 적으셈");
					String phone = sc.next();
					System.out.print("추가할 아이디 적으셈");
					String id = sc.next();
					System.out.print("추가할 비번 적으셈");
					String password = sc.next();
					stmt.setString(1, name);
					stmt.setString(2, phone);
					stmt.setString(3, id);
					stmt.setString(4, password);

					stmt.executeUpdate();
					System.out.print("1.계속추가 0.종료");
					int go = sc.nextInt();
					if (go == 0) {
						break;
					} else if(go<0 && go>1){
						System.out.println("1 or 0을 선택하세요");
					}
				}
			}else if (choose ==3) {
				String query = "UPDATE member SET ";
				System.out.print("등록번호를 고르세요");
				int num = sc.nextInt();
				System.out.println("수정할 부분을 고르세요");
				System.out.print("1.이름 2.폰번 3.아이디 4.비번 5.전체수정");
				int num2 = sc.nextInt();
				if(num2 ==1) {
					query+= "name=? where mno=?";
					PreparedStatement stmt = conn.prepareStatement(query);
					System.out.print("무슨 이름으로 바꾸시겠삼?");
					String rename = sc.next();
					stmt.setString(1, rename);
					
					stmt.setInt(2, num);
					int result = stmt.executeUpdate();
					System.out.println("실행된 횟수 " +result);
				}else if (num2 ==2) {
					query+= "phone=? where mno=?";
					PreparedStatement stmt = conn.prepareStatement(query);
					System.out.print("무슨 폰번으로 바꾸시겠삼?");
					String rephone = sc.next();
					stmt.setString(1, rephone);
					
					stmt.setInt(2, num);
					int result = stmt.executeUpdate();
					System.out.println("실행된 횟수 " +result);
				}else if (num2 ==3) {
					query+= "id=? where mno=?";
					PreparedStatement stmt = conn.prepareStatement(query);
					System.out.print("무슨 id로 바꾸시겠삼?");
					String reid = sc.next();
					stmt.setString(1, reid);
					
					stmt.setInt(2, num);
					int result = stmt.executeUpdate();
					System.out.println("실행된 횟수 " +result);
				}else if (num2 ==4) {
					query+= "password=? where mno=?";
					PreparedStatement stmt = conn.prepareStatement(query);
					System.out.print("무슨 pw로 바꾸시겠삼?");
					String repw = sc.next();
					stmt.setString(1, repw);
					
					stmt.setInt(2, num);
					int result = stmt.executeUpdate();
					System.out.println("실행된 횟수 " +result);
				}else if (num2 ==5) {
					query+= "name=?, phone=?, id=?, password=? where mno=?";
					PreparedStatement stmt = conn.prepareStatement(query);
					System.out.print("무슨 이름으로 바꾸시겠삼?");
					String rename = sc.next();
					stmt.setString(1, rename);
					System.out.print("무슨 번호로 바꾸시겠삼?");
					String rephone = sc.next();
					stmt.setString(2, rephone);
					System.out.print("무슨 아이디로 바꾸시겠삼?");
					String reid = sc.next();
					stmt.setString(3, reid);
					System.out.print("무슨 비번으로 바꾸시겠삼?");
					String repw = sc.next();
					stmt.setString(4, repw);
					
					stmt.setInt(5, num);
					
					int result = stmt.executeUpdate();
					System.out.println("실행된 횟수 " +result);
				}
				else {
					System.out.println("1~4만 고르세요");
				}
			}else if (choose ==4) {
				String query = "DELETE FROM member where mno=?";
				PreparedStatement stmt = conn.prepareStatement(query);
				System.out.print("삭제할 등록번호를 고르세요");
				int denum = sc.nextInt();
				stmt.setInt(1, denum);
				
				int result = stmt.executeUpdate();
				System.out.println("실행된 횟수 " +result);
			}else if (choose ==5) {
				System.out.println("시스템종료");
				break;
			}else {
				System.out.println("1~5만 선택하세요 ^^");
			}

		}
	}

}