반응형
어제 배운 내용에서 조금 더 어려운 실습을 해보도록 할것이다.
이러한 게시판을 만들도록 할것이다. 해당 알파벳을 누르면 해당하는 항목으로 이동하며,
등록 , 수정, 삭제, 목록출력 등을 할것이다 .
public class SelfCheck_sql {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Statement state = null;
Connection conn = null;
PreparedStatement prepared = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Board?serverTimezone=UTC", "root", "12345");
System.out.println("데이타 베이스에 들어왔슴둥");
while (true) {
state = conn.createStatement();
System.out.println("====게시판====");
System.out.println("a. 글 등록");
System.out.println("b. 글 목록보기");
System.out.println("c. 글 내용보기");
System.out.println("d. 글 삭제하기");
System.out.println("e. 글 수정하기");
System.out.println("f. 종료 하기");
System.out.println("메뉴를 선택 하세요 : ");
String command = scan.next();
switch (command) {
case "a":
System.out.println("===글 등록하기===");
//메소드 호출
addlist(scan, conn);
break;
case "b":
System.out.println("===글 목록보기===");
//메소드 호출
showlist(state);
break;
case "c":
System.out.println("===글 내용보기===");
//메소드 호출
showsubject(scan, state);
break;
case "d":
System.out.println("===글 삭제하기===");
//메소드 호출
deletelist(scan, state);
break;
case "e":
System.out.println("===글 수정하기===");
//메소드 호출
changelist(scan, prepared, conn, state);
break;
case "f":
System.out.println("===종료하기를 눌럿습니다.===");
return;
default:
System.out.println("===메뉴 선택잘못하셨습니다.===");
break;
}
}
} catch (ClassNotFoundException | SQLException e) {
System.out.println("오류가 낫슴둥");
e.printStackTrace();
}
}
//삽입 메소드
public static void addlist(Scanner scan, Connection conn) {
//넣어줄 항목들 사용자에게 받아오기
System.out.print("작성자 :");
String writer = scan.next();
System.out.print("비밀번호 :");
String passwd = scan.next();
System.out.print("이메일 :");
String email = scan.next();
System.out.print("제목 :");
String subject = scan.next();
try {
//PreparedStatement 생성하고 뒤에 ?부분을 아래에 set String 으로 순차 적으로 넣어주고 있다.
PreparedStatement prepared = conn.prepareStatement("INSERT INTO board value(null,?,?,?,?)");
prepared.setString(1, writer);
prepared.setString(2, passwd);
prepared.setString(3, email);
prepared.setString(4, subject);
prepared.executeUpdate();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
//보여주기 메소드
public static void showlist(Statement state) {
try {
//ResultSet으로 출력해주기
ResultSet rs = state.executeQuery("SELECT * FROM board");
while (rs.next()) {
System.out.print("\t|\t" + rs.getString(1));
System.out.print("\t|\t" + rs.getString(2));
System.out.print("\t|\t" + rs.getString(3));
System.out.print("\t|\t" + rs.getString(4));
System.out.print("\t|\t" + rs.getString(5) + "\n");
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
//내용보여주기 메소드
public static void showsubject(Scanner scan, Statement state) {
System.out.println("검색할 글 번호를 입력하세요 ");
System.out.print("글번호 : ");
int num = scan.nextInt();
ResultSet rs = null;
try {
//ResultSet으로 원하는 쿼리문 작성후 출력 해주기
rs = state.executeQuery("SELECT writer, email, subject from board where id = " + num);
rs.next(); // 커서 이동시켜야 작동함
System.out.println("작성자 = " + rs.getString("writer") + ", 이메일 = " + rs.getString("email") + ", 제목 = " + rs.getString("subject"));
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
//수정하는 메소드
public static void changelist(Scanner scan, PreparedStatement prepared, Connection conn , Statement state ) {
System.out.println("수정할 글 번호를 입력하세요 ");
System.out.print("글번호 : ");
String num = scan.next();
try {
//수정할 부분들 ? 로 채우고 순서대로 사용자에게 수정할 텍스트 받아오기
prepared = conn.prepareStatement("UPDATE board SET writer = ? , passwd= ? ,email = ? ,subject=? WHERE id = " + num);
ResultSet rs = state.executeQuery("SELECT * FROM board WHERE id = " + num);
rs.next(); // 커서이동 시켜줘야 작동함
System.out.println("원래 작성자 :" + rs.getString("writer"));
System.out.print("수정할 작성자 : ");
String writer = scan.next();
System.out.println("원래 비밀번호 :" + rs.getString("passwd"));
System.out.print("수정할 비밀번호 : ");
String password = scan.next();
System.out.println("원래 이메일 :" + rs.getString("email"));
System.out.print("수정할 이메일 : ");
String email = scan.next();
System.out.println("원래 제목 :" + rs.getString("subject"));
System.out.print("수정할 제목 : ");
String subject = scan.next();
prepared.setString(1, writer);
prepared.setString(2, password);
prepared.setString(3, email);
prepared.setString(4, subject);
prepared.executeUpdate();
System.out.println("정보수정 완료 했습니다.");
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
//삭제 메소드
public static void deletelist(Scanner scan, Statement stat) {
System.out.println("삭제할 글 번호를 입력하세요 ");
System.out.print("글번호 : ");
String num = scan.next();
try {
stat.executeUpdate("DELETE FROM board where id =" + num);
System.out.println(num + "번 글이 삭제되었습니다.");
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
사진으로 넣다보니까 뒤죽박죽인데 보는데 불편함은 없을것이라 생각이 든다.
반응형