티스토리 뷰
UPDATE
Update문을 실행하여 테이블에 존재하는 레코드의 내용을 변경해 보겠습니다.
현재 테이블에 데이터가 들어 간 상태입니다.
ID가 git인 3번 째 레코드의 닉네임을 'git닉네임'으로 변경 해보겠습니다.
먼저 변경 페이지 요청을 위한 updateform.jsp를 작성해 보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>닉네임을 바꾸는 Form</title> </head> <body> <form action="/DbProgramming/update.jsp" method="post"> <table border="1"> <tr> <td>ID</td> <td><input type="text" name="memberid"></td> </tr> <tr> <td>바꿀 닉네임 :</td> <td> <input type="text" name="nickname"></td> </tr> </table> <input type="submit"> </form> </body> </html> | cs |
메서드 방식은 post 방식을 사용하면서 update.jsp에 처리 요청을 합니다.
쿼리 전성 버튼을 클릭합니다. 실제 쿼리문을 실행하여 처리하는 페이지인 update.jsp를 살펴 보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import = "java.sql.DriverManager" %> <%@ page import = "java.sql.Connection" %> <%@ page import = "java.sql.Statement" %> <%@ page import = "java.sql.ResultSet" %> <%@ page import = "java.sql.SQLException" %> <% request.setCharacterEncoding("utf-8"); String ID = request.getParameter("memberid"); String NICKNAME = request.getParameter("nickname"); int count=0; Class.forName("com.mysql.jdbc.Driver"); Connection conn = null; Statement stmt = null; try{ String jdbcDriver = "jdbc:mysql://localhost:3306/user?" + "useUnicode=true&characterEncoding=utf8"; String dbUser = ""; //데이터 베이스 계정 String dbPass = ""; //password String query = "update Member set NICKNAME=" + "'" + NICKNAME + "'" +"where ID=" +"'" + ID + "'" ; conn = DriverManager.getConnection(jdbcDriver,dbUser,dbPass); //Connection 생성 stmt = conn.createStatement(); count=stmt.executeUpdate(query); }catch(Exception e){} %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>쿼리를 적용하는 페이지입니다.</title> </head> <body> <%=count%>개의 레코드가 영향을 받았습니다. </body> </html> | cs |
UPDATE 문
- UPDATE 테이블이름 SET 바꿀 컬럼명 = '바꿀 내용' WHERE 조건절
11~12 Line - request.getParameter()를 통해 파라미터 값을 읽어옵니다.
27 Line - update 쿼리문을 생성합니다.
32 Line - executeUpdate()를 호출합니다. 반환 값으로 영향을 받은 레코드 개수를 반환
해당 레코드의 NICKNAME 컬럼이 변경 되었습니다.
INSERT
INSERT문을 통해서 새로운 레코드를 추가 해보겠습니다.
먼저 insertform.jsp 내용 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="/DbProgramming/insert.jsp" method="post"> <table border="1"> <tr> <td>ID</td> <td><input type="text" name="memberid"></td> <td>암호</td> <td> <input type="text" name="password"></td> </tr> <tr> <td>이름</td> <td> <input type="text" name="name"></td> <td>메일</td> <td> <input type="text" name="email"></td> </tr> <tr> <td>닉네임</td> <td> <input type="text" name="nickname"></td> <td>삽입</td> <td> <input type="submit" ></td> </tr> </table> </form> </body> </html> | cs |
테이블 태그를 사용하여 적절한 form을 구현합니다.
내용을 입력 한 뒤 쿼리 전송 버튼을 클릭 하면 insert.jsp로 처리 요청을 합니다.
다음은 insert.jsp 내용입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import = "java.sql.DriverManager" %> <%@ page import = "java.sql.Connection" %> <%@ page import = "java.sql.PreparedStatement" %> <%@ page import = "java.sql.ResultSet" %> <%@ page import = "java.sql.SQLException" %> <% request.setCharacterEncoding("utf-8"); String ID =request.getParameter("memberid"); String PASSWORD =request.getParameter("password"); String NAME =request.getParameter("name"); String EMAIL =request.getParameter("email"); String NICKNAME =request.getParameter("nickname"); Class.forName("com.mysql.jdbc.Driver"); Connection conn = null; PreparedStatement stmt = null; try{ String jdbcDriver = "jdbc:mysql://localhost:3306/user?" + "useUnicode=true&characterEncoding=utf8"; String dbUser = ""; //데이터 베이스 계정 String dbPass = ""; //password conn = DriverManager.getConnection(jdbcDriver,dbUser,dbPass); //Connection 생성 stmt = conn.prepareStatement("insert into member values(?,?,?,?,?)"); stmt.setString(1,ID); stmt.setString(2,PASSWORD); stmt.setString(3,NAME); stmt.setString(4,EMAIL); stmt.setString(5,NICKNAME); stmt.executeUpdate(); }catch(SQLException e){} stmt.close(); conn.close(); /* PreparedStatement는 Statement와 동일한 기능 제공ㅔㅔㅔ PreparedStatement는 쿼리의 틀을 미리 지정하고 값을 나중에 지정한다.PreparedStatement객체를 생성 할 떄 실행 할 쿼리를 미리 지정하는데 값에 해당하는 것들은 ?로 대체한다. 그리고 나중에 setString(index,들어갈 값)을 통하여 값을 지정해준다 */ %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 새로운 레코드를 삽입하였습니다. </body> </html> | cs |
31 Line - Connection.prepareStatement를 통해 PreparedStatement 객체 생성
32 Line - 쿼리문을 작성합니다. 값에 해당하는 부분은 '?'로 작성해줍니다.
32~36Line - '?'로 해당되는 값들을 지정합니다. index는 1부터 시작합니다.
38 Line - 쿼리문을 실행 합니다.
레코드가 추가 된 것을 확인 할수 있습니다.
Delete
앞에서 생성 했던 레코드를 반대로 삭제를 해보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>레코드 삭제 form</title> </head> <body> <form action="/DbProgramming/delete.jsp" method="post"> <table border="1"> <tr> <td>ID</td> <td><input type="text" name="memberid"></td> </tr> <tr> <td>password :</td> <td> <input type="text" name="password"></td> </tr> </table> <input type="submit"> </form> </body> </html> | cs |
ID와 Password를 입력 받아 해당 레코드를 삭제시킬 수있게 form을 구성합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import = "java.sql.DriverManager" %> <%@ page import = "java.sql.Connection" %> <%@ page import = "java.sql.Statement" %> <%@ page import = "java.sql.ResultSet" %> <%@ page import = "java.sql.SQLException" %> <% request.setCharacterEncoding("utf-8"); String ID = request.getParameter("memberid"); String PASSWORD = request.getParameter("password"); int count=0; Class.forName("com.mysql.jdbc.Driver"); Connection conn = null; Statement stmt = null; try{ String jdbcDriver = "jdbc:mysql://localhost:3306/user?" + "useUnicode=true&characterEncoding=utf8"; String dbUser = "root"; //데이터 베이스 계정 String dbPass = "dlwmfldjf1357!@"; //password String query = "delete from member where password=" +"'"+ PASSWORD +"'" + "&&" + "ID="+"'"+ ID+"'"; conn = DriverManager.getConnection(jdbcDriver,dbUser,dbPass); //Connection 생성 stmt = conn.createStatement(); count=stmt.executeUpdate(query); }catch(Exception e){} %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <%=count %>행이 삭제되었습니다. </body> </html> | cs |
ID가 lktprogrammer인 레코드가 삭제 된 것을 확인 할수 있습니다.
'Programming > JSP' 카테고리의 다른 글
06 <jsp:forward> 액션 태그 사용하기 (0) | 2017.09.13 |
---|---|
05 <jsp:include> 액션 태그와 include 디렉티브 (0) | 2017.09.11 |
03 데이터베이스 프로그래밍 - 테이블 생성 및 조회하기 (2) | 2017.09.06 |
02 데이터베이스 프로그래밍 - 프로젝트 생성 및 환경설정 (0) | 2017.09.05 |
01 데이터베이스 프로그래밍 - MySql 설치 (0) | 2017.09.01 |