반응형
01. MemberDAO.java
package xyz.itwill.dao;
public class MemberDAO extends JdbcDAO {
private static MemberDAO _dao;
private MemberDAO() {
// TODO Auto-generated constructor stub
}
static {
_dao = new MemberDAO();
}
public static MemberDAO getDAO() {
return _dao;
}
//화면 설계에 따라 필요한 메소드들 작성
1) insertMember(member) : 회원정보 삽입
//회원정보를 전달받아 MEMBER 테이블에 삽입하고 삽입행의 갯수를 반환하는 메소드
public int insertMember(MemberDTO member) {
Connection con=null;
PreparedStatement pstmt=null;
int rows=0;
try {
con=getConnection();
String sql="insert into member values(?,?,?,?,?,?,?,?,sysdate,null,1)";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, member.getId());
pstmt.setString(2, member.getPasswd());
pstmt.setString(3, member.getName());
pstmt.setString(4, member.getEmail());
pstmt.setString(5, member.getMobile());
pstmt.setString(6, member.getZipcode());
pstmt.setString(7, member.getAddress1());
pstmt.setString(8, member.getAddress2());
rows=pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println("[에러]insertStudent() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt);
}
return rows;
}
2) selectMember(id) : 회원정보 출력
//아이디를 전달받아 MEMBER 테이블에 저장된 해당 아이디의 회원정보를 검색하여 반환하는 메소드
public MemberDTO selectMember(String id) {
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
MemberDTO member=null;
try {
con=getConnection();
String sql="select * from member where id=?";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, id);
rs=pstmt.executeQuery();
if(rs.next()) {
member=new MemberDTO();
member.setId(rs.getString("id"));
member.setPasswd(rs.getString("passwd"));
member.setName(rs.getString("name"));
member.setEmail(rs.getString("email"));
member.setMobile(rs.getString("mobile"));
member.setZipcode(rs.getString("zipcode"));
member.setAddress1(rs.getString("address1"));
member.setAddress2(rs.getString("address2"));
member.setJoinDate(rs.getString("join_date"));
member.setLastLogin(rs.getString("last_login"));
member.setStatus(rs.getInt("status"));
}
} catch (SQLException e) {
System.out.println("[에러]selectMember() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt, rs);
}
return member;
}
3) updateLastLogin(id) : 회원정보(마지막로그인) 변경
//아이디를 전달받아 MEMBER 테이블에 저장된 해당 아이디의 회원정보에서 마지막 로그인 날짜를
//변경하고 변경행의 갯수를 반환하는 메소드
public int updateLastLogin(String id) {
Connection con=null;
PreparedStatement pstmt=null;
int rows=0;
try {
con=getConnection();
String sql="update member set last_login=sysdate where id=?";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, id);
rows=pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println("[에러]updateLastLogin() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt);
}
return rows;
}
4) updateMember(member) : 회원정보 변경
//회원정보를 전달받아 MEMBER 테이블에 저장된 회원정보를 변경하고 변경행의 갯수를 반환하는 메소드
public int updateMember(MemberDTO member) {
Connection con=null;
PreparedStatement pstmt=null;
int rows=0;
try {
con=getConnection();
String sql="update member set passwd=?,name=?,email=?,mobile=?,zipcode=?"
+ ",address1=?,address2=? where id=?";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, member.getPasswd());
pstmt.setString(2, member.getName());
pstmt.setString(3, member.getEmail());
pstmt.setString(4, member.getMobile());
pstmt.setString(5, member.getZipcode());
pstmt.setString(6, member.getAddress1());
pstmt.setString(7, member.getAddress2());
pstmt.setString(8, member.getId());
rows=pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println("[에러]updateMember() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt);
}
return rows;
}
5) updateStatus(id, status) : 회원정보(상태) 변경
//아이디와 회원상태를 전달받아 MEMBER 테이블에 저장된 해당 아이디의 회원정보에서 회원상태를
//변경하고 변경행의 갯수를 반환하는 메소드
public int updateStatus(String id, int status) {
Connection con=null;
PreparedStatement pstmt=null;
int rows=0;
try {
con=getConnection();
String sql="update member set status=? where id=?";
pstmt=con.prepareStatement(sql);
pstmt.setInt(1, status);
pstmt.setString(2, id);
rows=pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println("[에러]updateStatus() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt);
}
return rows;
}
6) selectMemberList() : 회원정보 리스트 출력
//MEMBER 테이블에 저장된 모든 회원정보를 검색하여 반환하는 메소드
public List<MemberDTO> selectMemberList() {
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
List<MemberDTO> memberList=new ArrayList<MemberDTO>();
try {
con=getConnection();
String sql="select * from member order by id";
pstmt=con.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()) {
MemberDTO member=new MemberDTO();
member.setId(rs.getString("id"));
member.setPasswd(rs.getString("passwd"));
member.setName(rs.getString("name"));
member.setEmail(rs.getString("email"));
member.setMobile(rs.getString("mobile"));
member.setZipcode(rs.getString("zipcode"));
member.setAddress1(rs.getString("address1"));
member.setAddress2(rs.getString("address2"));
member.setJoinDate(rs.getString("join_date"));
member.setLastLogin(rs.getString("last_login"));
member.setStatus(rs.getInt("status"));
memberList.add(member);
}
} catch (SQLException e) {
System.out.println("[에러]selectMemberList() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt, rs);
}
return memberList;
}
7) deleteMember(id) : 회원 삭제
//아이디를 전달받아 MEMBER 테이블에 저장된 해당 아이디의 회원정보를 삭제하고 삭제행의 갯수를 반환하는 메소드
public int deleteMember(String id) {
Connection con=null;
PreparedStatement pstmt=null;
int rows=0;
try {
con=getConnection();
String sql="delete from member where id=?";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, id);
rows=pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println("[에러]deleteMember() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt);
}
return rows;
}
}
02. BoardDAO.java
package xyz.itwill.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import xyz.itwill.dto.BoardDTO;
public class BoardDAO extends JdbcDAO {
private static BoardDAO _dao;
private BoardDAO() {
// TODO Auto-generated constructor stub
}
static {
_dao = new BoardDAO();
}
public static BoardDAO getDAO() {
return _dao;
}
1) selectBoardCount() & selectBoardCount(search, keyword) : 특정 게시글의 갯수 출력
/*
//BOARD 테이블에 저장된 전체 게시글의 갯수를 검색하여 반환하는 메소드
//=>서칭 기능 없을 때 이용한 메소드 : 매개변수없음
public int selectBoardCount(){
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
int count=0;
try {
con=getConnection();
//BOARD 테이블에 저장된 모든 행의 갯수 검색 - count그룹함수 이용
String sql="select count(*) from board"; //단일행, 단일컬럼 검색됨
pstmt=con.prepareStatement(sql);
rs=pstmt.executeQuery();
if(rs.next()) {
count=rs.getInt(1);
}
} catch (SQLException e) {
System.out.println("[에러]selectBoardCount() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt, rs);
}
return count;
}
*/
/*
//검색 관련 정보를 전달받아 BOARD 테이블에 저장된 특정 게시글의 갯수를 검색하여 반환하는 메소드
//=>서칭 기능 있을 때 이용한 메소드 : 매개변수있음
public int selectBoardCount(String search,String keyword){
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
int count=0;
try {
con=getConnection();
//BOARD 테이블에 저장된 모든 행의 갯수 검색 - count그룹함수 이용
String sql="select count(*) from board"; //단일행, 단일컬럼 검색됨
pstmt=con.prepareStatement(sql);
rs=pstmt.executeQuery();
if(rs.next()) {
count=rs.getInt(1);
}
} catch (SQLException e) {
System.out.println("[에러]selectBoardCount() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt, rs);
}
return count;
}
*/
//검색 관련 정보를 전달받아 BOARD 테이블에 저장된 특정 게시글의 갯수를 검색하여 반환하는 메소드
public int selectBoardCount(String search, String keyword) {
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
int count=0;
try {
con=getConnection();
//매개변수에 저장된 값을 비교하여 다른 SQL 명령을 전달하여 실행되도록 작성
// => 동적 SQL(Dynamic SQL) 기능 사용
if(keyword.equals("")) {//검색 기능을 사용하지 않은 경우
String sql="select count(*) from board";
pstmt=con.prepareStatement(sql);
} else {//검색 기능을 사용한 경우
//검색대상(컬럼명)은 값이 아니므로 ?(InParameter)로 사용 불가능
String sql="select count(*) from board join member on board.id=member.id"
+ " where "+search+" like '%'||?||'%' and board.status<>0";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, keyword);
}
rs=pstmt.executeQuery();
if(rs.next()) {
count=rs.getInt(1);
}
} catch (SQLException e) {
System.out.println("[에러]selectBoardCount() 메서드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt, rs);
}
return count;
}
2) selectBoardList(startRow, endRow) : startRow ~ endRow 행까지의 게시글 출력
//2.
//검색 관련 정보 및 요청 페이지에 대한 시작 게시글의 행번호와 종료 게시글의 행번호를 전달
//받아 BAORD 테이블에 저장된 특정 게시글에서 해당 범위의 게시글만을 검색하여 반환하는 메소드
//public List<BoardDTO> selectBoardList(int startRow, int endRow) {
public List<BoardDTO> selectBoardList(int startRow, int endRow, String search, String keyword) {
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
List<BoardDTO> boardList = new ArrayList<BoardDTO>();
try {
con=getConnection();
//=> VS mysql: startRow & limit절이용 (단점: 행 많아질수록 속도 느려짐)
//=> oracle: startRow & endRow 모두 구해 rownum키워드 + 인라인뷰 2번 처리 이용
//rownum키워드 + 인라인뷰 2번 처리
//join이용 시 컬럼명 명확히 명시 + 중복컬럼명은 테이블명.컬럼명으로 명시
//원하는 행까지만 검색할 수 있도록 : 원하는 행 - startRow & endRow 전달받을 것임
//다중 답변형 게시판의 정렬: order by ref desc, re_step asc
//일반 게시판의 정렬: order by num
//동적 SQL(Dynamic SQL)
if(keyword.equals("")) { //검색 기능을 사용하지 않은 경우
String sql="select * from (select rownum rn, temp.* from (select num,member.id"
+ ",name,subject,reg_date,readcount,ref,re_step,re_level,content,ip,"
+ "board.status from board join member on board.id=member.id"
+ " order by ref desc, re_step) temp) where rn between ? and ?";
pstmt=con.prepareStatement(sql);
pstmt.setInt(1,startRow);
pstmt.setInt(2,endRow);
} else { //검색 기능을 사용한 경우 - 일반게시글(status=1)일때만 검색 가능
String sql="select * from (select rownum rn,temp.* from (select num,member.id"
+ ",name,subject,reg_date,readcount,ref,re_step,re_level,content,ip"
+ ",board.status from board join member on board.id=member.id"
+ " where "+search+" like '%'||?||'%' and board.status<>0 order by"
+ " ref desc, re_step) temp) where rn between ? and ?";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, keyword);
pstmt.setInt(2,startRow);
pstmt.setInt(3,endRow);
}
rs=pstmt.executeQuery();
while(rs.next()) {
BoardDTO board = new BoardDTO();
board.setNum(rs.getInt("num"));
board.setId(rs.getString("id"));
board.setWriter(rs.getString("name"));
board.setSubject(rs.getString("subject"));
board.setRegDate(rs.getString("reg_date"));
board.setReadcount(rs.getInt("readcount"));
board.setRef(rs.getInt("ref"));
board.setReStep(rs.getInt("re_step"));
board.setReLevel(rs.getInt("re_level"));
board.setContent(rs.getString("content"));
board.setIp(rs.getString("ip"));
board.setStatus(rs.getInt("status"));
boardList.add(board); //List 객체의 요소로 추가 반드시
}
} catch (SQLException e) {
System.out.println("[에러]selectBoardList() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt, rs);
}
return boardList;
}
3) selectNextNum() : 시퀀스의 다음값 출력
//BOARD_SEQ 시퀀스의 다음값을 검색하여 반환하는 메소드
public int selectNextNum() {
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
int nextnum=0;
try {
con=getConnection();
String sql="select board_seq.nextval from dual";
pstmt=con.prepareStatement(sql);
rs=pstmt.executeQuery();
if(rs.next()) {
nextnum=rs.getInt(1);
}
} catch (SQLException e) {
System.out.println("[에러]selectNextNum() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt, rs);
}
return nextnum;
}
4) insertBoard(board) : 게시글 삽입
//게시글을 전달받아 BOARD 테이블에 삽입하고 삽입행의 갯수를 반환하는 메소드
public int insertBoard(BoardDTO board) {
Connection con=null;
PreparedStatement pstmt=null;
int rows=0;
try {
con=getConnection();
String sql="insert into board values(?,?,?,sysdate,0,?,?,?,?,?,?)";
pstmt=con.prepareStatement(sql);
pstmt.setInt(1, board.getNum());
pstmt.setString(2,board.getId());
pstmt.setString(3,board.getSubject());
pstmt.setInt(4,board.getRef());
pstmt.setInt(5,board.getReStep());
pstmt.setInt(6,board.getReLevel());
pstmt.setString(7,board.getContent());
pstmt.setString(8,board.getIp());
pstmt.setInt(9,board.getStatus());
rows=pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println("[에러]insertBoard() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt);
}
return rows;
}
5) updateRestep(ref, reStep) : 같은 그룹내 같은 그룹순서인 것을 찾아 re_step() 1 증가로 변경
//5.
//부모글의 정보를 전달받아 BOARD 테이블에 저장된 게시글에서 그룹이 같은 게시글 중
//부모글보다 순서가 높은 모든 게시글의 RE_STEP 컬럼값이 1씩 증가되도록 변경하고
//변경행의 갯수를 반환하는 메소드
public int updateRestep(int ref, int reStep) {
Connection con=null;
PreparedStatement pstmt=null;
int rows=0;
try {
con=getConnection();
String sql = "update board set re_step=re_step+1 where ref=? and re_step>?";
pstmt=con.prepareStatement(sql);
pstmt.setInt(1, ref);
pstmt.setInt(2, reStep);
rows=pstmt.executeUpdate();
}catch (SQLException e) {
System.out.println("[에러]insertBoard() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt);
}
return rows;
}
6) selectBoard(num) : 게시글 출력
//6.
//글번호를 전달받아 BOARD테이블에 저장된 해당 글번호의 게시글을 검색하여 반환하는 메소드
public BoardDTO selectBoard(int num) {
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
BoardDTO board=null;
try {
con=getConnection();
String sql="select num,member.id,name,subject,reg_date,readcount,ref,re_step"
+ ",re_level,content,ip,board.status from board join member"
+ " on board.id=member.id where num=?"; //단일행 다중컬럼
pstmt=con.prepareStatement(sql);
pstmt.setInt(1, num);
rs=pstmt.executeQuery();
if(rs.next()) {
board=new BoardDTO();
board.setNum(rs.getInt("num"));
board.setId(rs.getString("id"));
board.setWriter(rs.getString("name"));
board.setSubject(rs.getString("subject"));
board.setRegDate(rs.getString("reg_date"));
board.setReadcount(rs.getInt("readcount"));
board.setRef(rs.getInt("ref"));
board.setReStep(rs.getInt("re_step"));
board.setReLevel(rs.getInt("re_level"));
board.setContent(rs.getString("content"));
board.setIp(rs.getString("ip"));
board.setStatus(rs.getInt("status"));
}
} catch (SQLException e) {
System.out.println("[에러]selectBoard() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt, rs);
}
return board;
}
7) updateReadCount(num) : 게시글의 readCount(조회수) 1 증가로 변경
//7.
//글번호를 전달받아 BOARD 테이블에 저장된 해당 글번호의 게시글의 조회수가 1 증가되도록 변경하고
//변경행의 갯수를 반환하는 메소드
public int updateReadCount(int num) {
Connection con=null;
PreparedStatement pstmt=null;
int rows=0;
try {
con=getConnection();
String sql="update board set readcount=readcount+1 where num=?";
pstmt=con.prepareStatement(sql);
pstmt.setInt(1, num);
rows=pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println("[에러]updateReadCount() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt);
}
return rows;
}
8) updateBoard(board) : 게시글 변경
//8.
//게시글을 전달받아 BOARD 테이블에 저장된 해당 게시글을 변경하고 변경행의 갯수를 반환하는 메소드
public int updateBoard(BoardDTO board) {
Connection con=null;
PreparedStatement pstmt=null;
int rows=0;
try {
con=getConnection();
String sql="update board set subject=?,content=?,status=? where num=?";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, board.getSubject());
pstmt.setString(2, board.getContent());
pstmt.setInt(3, board.getStatus());
pstmt.setInt(4, board.getNum());
rows=pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println("[에러]updateBoard() 메서드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt);
}
return rows;
}
9) updateStatus(num, status) : 게시글 상태 변경(삭제, 일반, 비밀)
//9.
//글번호와 글상태를 전달받아 BOARD 테이블에 저장된 해당 글번호의 게시글에 대한 상태를
//변경하고 변경행의 갯수를 반환하는 메소드
// 0 (삭제글), 1(일반글), 2(비밀글)
public int updateStatus(int num, int status) {
Connection con=null;
PreparedStatement pstmt=null;
int rows=0;
try {
con=getConnection();
String sql="update board set status=? where num=?";
pstmt=con.prepareStatement(sql);
pstmt.setInt(1, status);
pstmt.setInt(2, num);
rows=pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println("[에러]updateStatus() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt);
}
return rows;
}
}
03. ProductDAO.java
package xyz.itwill.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import xyz.itwill.dto.ProductDTO;
public class ProductDAO extends JdbcDAO {
private static ProductDAO _dao;
private ProductDAO() {
// TODO Auto-generated constructor stub
}
static {
_dao=new ProductDAO();
}
public static ProductDAO getDAO() {
return _dao;
}
1) selectProductList(category) : 카테코리에 따른 상품리스트 출력
//1.
//카테고리를 전달받아 PRODUCT 테이블에 저장된 해당 카테고리의 모든 제품정보를 검색하여 반환하는 메소드
// => PRODUCT 테이블에 저장된 모든 제품정보를 검색하여 반환
public List<ProductDTO> selectProductList(String category) {
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
List<ProductDTO> productList=new ArrayList<>();
try {
con=getConnection();
//동적 SQL 기능을 사용하여 매개변수에 저장된 값에 따라 다른 SQL 명령이 전달되어
//실행되도록 설정
if(category.equals("ALL")) {
String sql="select * from product order by category, name";
pstmt=con.prepareStatement(sql);
} else {
String sql="select * from product where category=? order by name";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, category);
}
rs=pstmt.executeQuery();
while(rs.next()) {
ProductDTO product=new ProductDTO();
product.setNum(rs.getInt("num"));
product.setCategory(rs.getString("category"));
product.setName(rs.getString("name"));
product.setImageMain(rs.getString("image_main"));
product.setImageDetail(rs.getString("image_detail"));
product.setQty(rs.getInt("qty"));
product.setPrice(rs.getInt("price"));
productList.add(product);
}
} catch (SQLException e) {
System.out.println("[에러]selectProductList() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt, rs);
}
return productList;
}
2) insertProduct(product) : 상품 삽입
//2.
//제품정보를 전달받아 PRODUCT 테이블에 삽입하고 삽입행의 갯수를 반환하는 메소드
public int insertProduct(ProductDTO product) {
Connection con=null;
PreparedStatement pstmt=null;
int rows=0;
try {
con=getConnection();
String sql="insert into product values(product_seq.nextval,?,?,?,?,?,?)";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, product.getCategory());
pstmt.setString(2, product.getName());
pstmt.setString(3, product.getImageMain());
pstmt.setString(4, product.getImageDetail());
pstmt.setInt(5, product.getQty());
pstmt.setInt(6, product.getPrice());
rows=pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println("[에러]insertProduct() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt);
}
return rows;
}
3) selectProduct(num) : 상품 출력
//3.
//제품번호를 전달받아 PRODUCT 테이블에 저장된 해당 제품번호의 제품정보를 검색하여 반환하는 메소드
public ProductDTO selectProduct(int num) {
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
ProductDTO product=null;
try {
con=getConnection();
String sql="select * from product where num=?";
pstmt=con.prepareStatement(sql);
pstmt.setInt(1, num);
rs=pstmt.executeQuery();
while (rs.next()) {
product=new ProductDTO();
product.setNum(rs.getInt("num"));
product.setCategory(rs.getString("category"));
product.setName(rs.getString("name"));
product.setImageMain(rs.getString("image_main"));
product.setImageDetail(rs.getString("image_detail"));
product.setQty(rs.getInt("qty"));
product.setPrice(rs.getInt("price"));
}
} catch (SQLException e) {
System.out.println("[에러]selectProduct() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt, rs);
}
return product;
}
4) updateProduct(product) : 상품 변경
//4.
//제품정보를 전달받아 PRODUCT 테이블에 저장된 해당 제품정보를 변경하는 메소드
public int updateProduct(ProductDTO product) {
Connection con=null;
PreparedStatement pstmt=null;
int rows=0;
try {
con=getConnection();
String sql="update product set category=?, name=?, image_main=?, image_detail=?"
+ ", qty=?, price=? where num=?";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, product.getCategory());
pstmt.setString(2, product.getName());
pstmt.setString(3, product.getImageMain());
pstmt.setString(4, product.getImageDetail());
pstmt.setInt(5, product.getQty());
pstmt.setInt(6, product.getPrice());
pstmt.setInt(7, product.getNum());
rows=pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println("[에러]updateProduct() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt);
}
return rows;
}
}
04. ZIPDAO.java
package xyz.itwill.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import xyz.itwill.dto.ZipDTO;
public class ZipDAO extends JdbcDAO {
private static ZipDAO _dao;
private ZipDAO() {
// TODO Auto-generated constructor stub
}
static {
_dao=new ZipDAO();
}
public static ZipDAO getDAO() {
return _dao;
}
1) selectZipList(dong) : 동이름에 알맞은 우편번호 출력
//동이름을 전달받아 ZIP 테이블에서 해당 동이름으로 시작되는 우편번호 관련 정보를 검색하여
//반환하는 메소드
public List<ZipDTO> selectZipList(String dong) {
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
List<ZipDTO> zipList=new ArrayList<>();
try {
con=getConnection();
String sql="select * from zip where dong like ?||'%' order by zipcode";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, dong);
rs=pstmt.executeQuery();
while(rs.next()) {
ZipDTO zip=new ZipDTO();
zip.setZipcode(rs.getString("zipcode"));
zip.setDong(rs.getString("dong"));
zip.setAddress(rs.getString("address"));
zipList.add(zip);
}
} catch (SQLException e) {
System.out.println("[에러]selectZipList() 메소드의 SQL 오류 = "+e.getMessage());
} finally {
close(con, pstmt, rs);
}
return zipList;
}
반응형
'jsp' 카테고리의 다른 글
[jsp] 19. 웹사이트 제작법5_회원가입 페이지 제작 (feat. JSP) (0) | 2024.07.13 |
---|---|
[jsp] 18. 웹사이트 제작법4_Utility제작 (feat. JSP) (0) | 2024.07.13 |
[jsp] 16. 웹사이트 제작법2_테이블,DTO제작 (feat. JSP) (0) | 2024.07.12 |
[jsp] 15. 웹사이트 제작법1_뼈대제작 (feat. JSP) (0) | 2024.07.11 |
[jsp] 14. 학생정보 관리 프로그램 (0) | 2024.07.11 |