DB - JAVA로 게시판 만드는 퀴즈(2) - Insert(게시물 등록하기) '편'(2022-08-10)
2022. 8. 10. 19:52ㆍ3층 1구역 - 개발의 장/Oracle DataBase
1. 서론
2.본론
Main.java
package jdbc7_answer;
import java.util.Scanner;
public class Main {
private static Scanner in = new Scanner(System.in);
private static BoardServiceImpl boardService = new BoardServiceImpl();
public static void main(String[] args) {
while (true) {
System.out.println();
System.out.println("1. 게시글 등록");
System.out.println("2. 게시글 번호 검색");
System.out.println("3. 게시글 제목 검색");
System.out.println("4. 게시글 모두 보기");
System.out.println("5. 게시글 삭제");
System.out.println("6. 게시글 수정");
System.out.println("7. 프로그램 종료");
System.out.print("선택 > ");
int select;
try {
select = Integer.parseInt(in.next());
} catch (Exception e) {
continue;
}
switch (select) {
case 1: insert(); break;
case 2: selectNum(); break;
case 3: selectSubject(); break;
case 4: selectAll(); break;
case 5: delete(); break;
case 6: update(); break;
case 7: disconnection();
System.out.println("프로그램을 종료합니다.");
System.exit(0);
default:
System.out.println("메뉴 확인 후 다시 입력하세요.");
}
}
}
private static void insert() {
in.nextLine();
System.out.print("게시글 제목 : "); String subject = in.nextLine();
System.out.print("게시글 내용 : "); String content = in.nextLine();
System.out.print("게시글 작성자 : "); String writer = in.next();
BoardDTO board = new BoardDTO();
board.setSubject(subject);
board.setContent(content);
board.setWriter(writer);
boardService.insert(board);
}
BoardService.java
package jdbc7_answer;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class BoardServiceImpl implements IBoardService{
private BoardDAOImpl boardDao = new BoardDAOImpl();
@Override
public void insert(BoardDTO board) {
board.setNum(boardDao.selectMaxNum());
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
board.setWriteTime(sdf.format(date));
board.setHit(0);
boardDao.insert(board);
}
}
BoardDTO.java
package jdbc7_answer;
/*
SQL> CREATE TABLE jdbc_concept7(
2 num number,
3 subject varchar2(20),
4 content varchar2(20),
5 writer varchar2(20),
6 write_time varchar2(10),
7 hit number
8 );
SQL> commit;
*/
public class BoardDTO {
private int num; // 게시글 번호
private String subject; // 게시글 제목
private String content; // 게시글 내용
private String writer; // 게시글 작성자
private String writeTime; // 게시글 작성일(연월일)
private int hit; // 게시글 조회수
//게시물 번호, 전체 검색할 때 데이터베이스에 있는 값을 가져와
//여기에 임시저장한 후 BoardServiceImpl에서 출력함.
public int getNum() {
return num;
}
//검색할 때 데이터베이스에 있는 값을 가져와
//여기에 임시저장한 후 BoardServiceImpl에서 출력함.
public String getWriter() {
return writer;
}
//게시물 제목, 전체 검색할 때 데이터베이스에 있는 값을 가져와
//여기에 임시저장한 후 BoardServiceImpl에서 출력함.
public String getSubject() {
return subject;
}
//전체 검색할 때 데이터베이스에 있는 값을 가져와
//여기에 임시저장한 후 BoardServiceImpl에서 출력함.
public String getContent() {
return content;
}
//전체 검색할 때 데이터베이스에 있는 값을 가져와
//여기에 임시저장한 후 BoardServiceImpl에서 출력함.
public String getWriteTime() {
return writeTime;
}
//전체 검색할 때 데이터베이스에 있는 값을 가져와
//여기에 임시저장한 후 BoardServiceImpl에서 출력함.
public int getHit() {
return hit;
}
//insert에서 받아와 여기에 임시저장
public void setSubject(String subject) {
this.subject = subject;
}
//insert에서 받아와 여기에 임시저장
public void setContent(String content) {
this.content = content;
}
//insert에서 받아와 여기에 임시저장
public void setWriter(String writer) {
this.writer = writer;
}
//BoardDAO의 쿼리문에서 받아와
//BoardServiceImpl로 이동하고 여기에 임시저장
public void setNum(int num) {
this.num = num;
}
//Date를 나타내주는 java.util를 import를 하여
//BoardServiceImpl에서 이동해 여기에 임시저장
public void setWriteTime(String writeTime) {
this.writeTime = writeTime;
}
//BoardDAO의 쿼리문에서 받아와
//BoardServiceImpl로 이동하고 여기에 임시저장
public void setHit(int hit) {
this.hit = hit;
}
}
BoardDAOImpl.java
package jdbc7_answer;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class BoardDAOImpl implements IBoardDAO {
private Connection con;
private PreparedStatement ps;
private ResultSet rs;
public BoardDAOImpl() {
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String username = "<권한받은 계정>";
String password = "<설치시 등록한 비밀번호>";
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public int selectMaxNum() {
String sql = "SELECT max(num) FROM <테이블 명>";
int maxNum = 0;
try {
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
if (rs.next()) {
maxNum = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return ++maxNum;
}
@Override
public void insert(BoardDTO board) {
String sql = "INSERT INTO <테이블 명> VALUES(?, ?, ?, ?, ?, ?)";
try {
ps = con.prepareStatement(sql);
ps.setInt(1, board.getNum());
ps.setString(2, board.getSubject());
ps.setString(3, board.getContent());
ps.setString(4, board.getWriter());
ps.setString(5, board.getWriteTime());
ps.setInt(6, board.getHit());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3. 결론
은행의 통장발급 과정으로 생각해보자.
어떤 사람이 자신의 원대한 꿈을 이루고자 저축(게시물 작성)을 시작하려고 한다.
저축은 적금(게시물의 제목), 주택청약(게시물의 내용), 외화통장(닉네임) 총 3가지를 하고자 신청서(Insert값)를 제출하고
대기하면 그것을 검증(BoardService)하는 은행원이 신청서(Insert값)를 가져가 검증과 동시에
이 사람이 언제 저축을 시작했고(Date의 값)
몇 번째(board.setNum(boardDao.selectMaxNum());)로 저축을 시작한 사람이고,
저축한 횟수(board.setHit(0);)를 전산으로 저장하여 은행의 데이터베이스에 저장한다.
'3층 1구역 - 개발의 장 > Oracle DataBase' 카테고리의 다른 글
DB - JAVA로 게시판 만드는 퀴즈(4) - SelectAll(게시물 모두 보기) '편'(2022-08-10) (0) | 2022.08.10 |
---|---|
DB - JAVA로 게시판 만드는 퀴즈(3) - SelectNum(게시물 번호로 검색하기) '편'(2022-08-10) (0) | 2022.08.10 |
DB - JAVA로 게시판 만드는 퀴즈(1.5) - 비어있는 설계도면 '편'(2022-08-10) (0) | 2022.08.10 |
DB - JAVA로 게시판 만드는 퀴즈(1) - 간략한 흐름 '편'(2022-08-10) (0) | 2022.08.10 |
DB - 회원관리 프로그램 View 부분 상세설명(2022-08-09) (0) | 2022.08.09 |