내가 만든 JDBC board
public class JDBCBoard {
JDBCUtil jdbc = JDBCUtil.getInstance();
public static void main(String[] args) {
new JDBCBoard().start();
/* 조회, 등록, 수정, 삭제가 가능한 게시판을 만들어주세요.
*
* 번호, 제목, 내용, 작성자, 작성일
*
* 목록에서는 조회, 등록, 종료
* 상세화면에서는 수정, 삭제, 목록
*/
//테이블 목록 조회
}
//테이블 확인하기
private void start() {
while(true) {
String sql = "Select * from TB_JDBC_BOARD";
List<Map<String, Object>> boardTable = jdbc.selectList(sql);
//컬럼명 출력
System.out.println("===================================");
System.out.println("NO.\tTITLE\tUSER_ID\tREG_DATE");
System.out.println("-----------------------------------");
for(int i = boardTable.size() - 1; i >= 0; i--) {
Map<String, Object> board = boardTable.get(i);
System.out.print(board.get("BOARD_NO")
+ "\t" + board.get("TITLE")
+ "\t" + board.get("USER_ID")
+ "\t" + board.get("REG_DATE"));
System.out.println();
System.out.println("-----------------------------------");
}
System.out.print("1.조회 2.등록 0.종료>");
int input = ScanUtil.nextInt();
switch(input) {
case 1:
read();
break;
case 2:
insert();
break;
case 0:
System.out.println("게시판을 종료합니다.");
System.exit(0);
break;
}
//값만 거꾸로 출력 - 조회 SELECT ORDER BY DESC
}
}
//등록 insert
void insert() {
//번호 -> 현재 게시판의 번호에서 max찾아서 +1 , 날짜 - 현재날짜(sysdate)
//sql = "insert into tb_jdbc_board values
ArrayList<Object> param = new ArrayList<>();
String sql = "insert into TB_JDBC_BOARD values (
(SELECT NVL(MAX(BOARD_NO),0)+1 FROM TB_JDBC_BOARD),? ,? ,? ,sysdate)";
//param의 1,2,3 값 받기
System.out.print("제목>");
param.add(ScanUtil.nextLine());
System.out.print("내용>");
param.add(ScanUtil.nextLine());
System.out.print("작성자>");
param.add(ScanUtil.nextLine());
int result = jdbc.update(sql, param);
System.out.println(result + "개의 글이 등록되었습니다.");
}
//수정 update
void update(int input) {
ArrayList<Object> param = new ArrayList<>();
String sql = "update TB_JDBC_BOARD
set TITLE =?,CONTENT=?,USER_ID=?
where BOARD_NO = ?";
System.out.print("제목>");
param.add(ScanUtil.nextLine());
System.out.print("내용>");
param.add(ScanUtil.nextLine());
System.out.print("작성자>");
param.add(ScanUtil.nextLine());
param.add(input);
int result = jdbc.update(sql, param);
System.out.println(result + "개의 행이 수정되었습니다.");
}
//삭제 delete
void delete(int input) {
ArrayList<Object> param = new ArrayList<>();
String sql = "delete from TB_JDBC_BOARD where BOARD_NO = ?";
param.add(input);
int result = jdbc.update(sql, param);
System.out.println(result + "개의 행이 삭제되었습니다.");
}
void read() {
ArrayList<Object> param = new ArrayList<>();
String sql = "select * from TB_JDBC_BOARD where BOARD_NO = ?";
System.out.println("조회할 게시물 번호>");
int input = ScanUtil.nextInt();
param.add(input);
Map<String, Object> board = jdbc.selectOne(sql, param);
System.out.println("==================================");
System.out.println("번호\t: " + board.get("BOARD_NO"));
System.out.println("작성자\t: " + board.get("USER_ID"));
System.out.println("제목\t: " + board.get("TITLE"));
System.out.println("내용\t: " + board.get("CONTENT"));
System.out.println("작성일\t: " + board.get("REG_DATE"));
System.out.println("===================================");
System.out.println("1.수정\t2.삭제\t0.목록");
int answer = ScanUtil.nextInt();
switch(answer) {
case 1:
update(input);
break;
case 2:
delete(input);
break;
case 0:
break;
}
//param.add에 조회할 게시물 번호랑 같은 것 찾기
}
}
선생님이 만든 JDBC board
public class JDBCBoard {
public static void main(String[] args) {
new JDBCBoard().start();
/* 조회, 등록, 수정, 삭제가 가능한 게시판을 만들어주세요.
*
* 번호, 제목, 내용, 작성자, 작성일
*
* 목록에서는 조회, 등록, 종료
* 상세화면에서는 수정, 삭제, 목록
*/
//테이블 목록 조회
}
JDBCUtil jdbc = JDBCUtil.getInstance();//JDBCUtil을 전역변수로 선언
//테이블 확인하기
private void start() {
while(true) {
String sql = "SELECT A.BOARD_NO"//쿼리 작성, 게시판테이블과 MEMBER테이블과 JOIN ,*는 사용지양
+ " ,A.TITLE"
+ " ,B.MEM_NAME AS USER_NAME"
+ " ,TO_CHAR(A.REG_DATE, 'MM/DD') AS REG_DATE"
+ " FROM TB_JDBC_BOARD A" //기준이 되는 테이블
+ " LEFT OUTER JOIN MEMBER B ON A.USER_ID = B.MEM_ID"
//LEFT OUTER JOIN 이후의 테이블 : 부수적으로 사용하는 테이블
+ " ORDER BY A.BOARD_NO DESC";
List<Map<String, Object>> boardList = jdbc.selectList(sql);
//컬럼명 출력
System.out.println("===================================");
System.out.println("번호\t제목\t작성자\t작성일");
for(Map<String, Object> board : boardList) {
System.out.println("-----------------------------------");
System.out.println(board.get("BOARD_NO")
+ "\t" + board.get("TITLE")
+ "\t" + board.get("USER_NAME")
+ "\t" + board.get("REG_DATE"));
}
System.out.println("===================================");
System.out.print("1.조회 2.등록 0.종료>");
int input = ScanUtil.nextInt();
switch(input) {
case 1:
read();
break;
case 2:
insert();
break;
case 0:
System.out.println("프로그램이 종료되었습니다.");
System.exit(0);
}
//값만 거꾸로 출력 - 조회 SELECT ORDER BY DESC
}
}
//등록 insert
void insert() {
System.out.print("제목>");
String title = ScanUtil.nextLine();
System.out.print("내용>");
String content = ScanUtil.nextLine();
System.out.print("작성자>");
String userId = ScanUtil.nextLine();
String sql = "INSERT INTO TB_JDBC_BOARD"
+ " VALUES ("
+ " (SELECT NVL(MAX(BOARD_NO), 0) + 1 FROM TB_JDBC_BOARD)"
//NULL대신 0이 나오도록
+ " , ?"
+ " , ?"
+ " , ?"
+ " , SYSDATE)";
ArrayList<Object> param = new ArrayList<>();
param.add(title);
param.add(content);
param.add(userId);
if(0 < jdbc.update(sql,param)) {
System.out.println("게시글이 등록되었습니다.");
}else {
System.out.println("게시글 등록에 실패하였습니다.");
}
}
void read() {
System.out.println("조회할 게시물 번호>");
int boardNo = ScanUtil.nextInt();
String sql = "SELECT A.BOARD_NO"//쿼리 작성, 게시판테이블과 MEMBER테이블과 JOIN ,*는 사용지양
+ " ,A.TITLE"
+ " ,A.CONTENT"
+ " ,B.MEM_NAME AS USER_NAME"
+ " ,TO_CHAR(A.REG_DATE, 'MM/DD') AS REG_DATE"
+ " FROM TB_JDBC_BOARD A"
+ " LEFT OUTER JOIN MEMBER B ON A.USER_ID = B.MEM_ID"
+ " WHERE A.BOARD_NO = ?";
ArrayList<Object> param = new ArrayList<>();
param.add(boardNo);
Map<String, Object> board = jdbc.selectOne(sql, param);
System.out.println("==================================");
System.out.println("번호\t: " + board.get("BOARD_NO"));
System.out.println("----------------------------------");
System.out.println("작성자\t: " + board.get("USER_NAME"));
System.out.println("----------------------------------");
System.out.println("작성일\t: " + board.get("REG_DATE"));
System.out.println("----------------------------------");
System.out.println("제목\t: " + board.get("TITLE"));
System.out.println("----------------------------------");
System.out.println("내용\t: " + board.get("CONTENT"));
System.out.println("===================================");
System.out.print("1.수정\t2.삭제\t0.목록");
int input = ScanUtil.nextInt();
switch(input) {
case 1:
update(boardNo);//수정과 삭제를 하려면 어떤 게시물을 할건지 정보가 필요 - 파라미터 필요
break;
case 2:
delete(boardNo);//수정과 삭제를 하려면 어떤 게시물을 할건지 정보가 필요 - 파라미터 필요
break;
case 0:
break;
}
}
//수정 update
void update(int boardNo) {
System.out.print("제목>");
String title = ScanUtil.nextLine();
System.out.print("내용>");
String content = ScanUtil.nextLine();
String sql = "UPDATE TB_JDBC_BOARD "
+ " SET TITLE = ?"
+ " , CONTENT = ? "
+ " WHERE BOARD_NO = ?";
ArrayList<Object> param = new ArrayList<>();
param.add(title);
param.add(content);
param.add(boardNo);
if(0 < jdbc.update(sql, param)) {
System.out.println("게시글이 수정되었습니다.");
}else {
System.out.println("게시글 수정에 실패하였습니다.");
}
}
//삭제 delete
void delete(int boardNo) {
System.out.println("정말 삭제하시겠습니까?(Y/N)>");
if(ScanUtil.nextLine().equals("Y")) {
String sql = "DELETE FROM TB_JDBC_BOARD "
+ " WHERE BOARD_NO = ?";
ArrayList<Object> param = new ArrayList<>();
param.add(boardNo);
if(0<jdbc.update(sql, param)) {
System.out.println("게시글이 삭제되었습니다.");
}else {
System.out.println("게시글 삭제에 실패하였습니다.");
}
}
}
}