--> 04 데이터베이스 프로그래밍 - UPDATE,INSERT,DELETE문

04 데이터베이스 프로그래밍 - UPDATE,INSERT,DELETE문

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인 레코드가 삭제 된 것을 확인 할수 있습니다.

 

 

 

 


댓글(0)

Designed by JB FACTORY