본문 바로가기
JSP, Servlet/Summary

JSP/Servlet : mysql - eclipse 연동하기

by autumnly 2017. 1. 16.


oracle 을 사용해 이클립스와 연동을 시도해봤지만

이상하게 에러가 뜨면서 잘 되지 않았다. (구글링 해도 나와 같은 에러는 거의 없었다ㅜㅜ)

결국 oracle 대신 mysql을 사용하기로 하고

mysql 홈페이지에서 connector 를 다운받아 라이브러리에 추가해주니 성공적으로 연동되었따




1. 데이터베이스 생성

> CREATE DATABASE 데이터베이스명
> USE 데이터베이스명


데이터베이스를 만들어주고

해당 데이터베이스를 사용할 수 있게 한다.






> SHOW DATABASES


모든 데이터베이스를 볼 수 있다.






> CREATE TABLE 테이블명


test 데이터베이스 안에 table 을 생성해준다.






> INSERT INTO 테이블명 VALUE


개체를 삽입해준다.






> SELECT * FROM 테이블명


삽입한 뒤 모습이다.








2. JDBC MySQL Connector Library 추가


https://dev.mysql.com/downloads/connector/


mySQL 홈페이지에서 connector 를 다운받을 수 있다.

다운받은 파일의 압축을 풀면 jar 파일이 있을 것이다.

해당 jar 파일을 eclipse 내 Java build path 설정에 추가해주면 된다.


나는 이렇게했더니

java.lang.classNotFoundException: com.mysql.jdbc.Driver

에러가 떠서

해당 jar 파일을 직접 jre의 라이브러리 폴더에 넣어주었다.







3. JSP 파일에서 데이터 불러오기

DataTest.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
<%@ page import="java.sql.*" %>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
 
        <%!
        Connection connection = null;
        Statement statement;
        ResultSet resultSet;
        
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/test";
        String uid = "autumn";
        String upw = "8386";
        String query = "select * from member";
        %>
<!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=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 
    <%
        try{
            Class.forName(driver);
            connection = DriverManager.getConnection(url, uid, upw);
            statement = connection.createStatement();
            resultSet = statement.executeQuery(query);
 
            while(resultSet.next()){
                String id = resultSet.getString("id");
                String pw = resultSet.getString("pw");
                String phone = resultSet.getString("phone");
                out.println("ID : " + id + ", PW : " + pw + ", PHONE : " + phone + "<br/>");
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally//모든 자원 해제
            try{
                if(resultSet != null) resultSet.close();
                if(statement != null) statement.close();
                if(connection != null) connection.close();
            }catch(Exception e2){
                e2.printStackTrace();
            }
        }
    %>
</body>
</html>
cs


JSP 파일에서 데이터베이스를 연결하는 과정은 다음과 같다.

jdbc 드라이버 로드 -> 데이터베이스 연결 -> SQL문 실행 -> 데이터베이스 연결해제



jdbc 드라이버 로드

1
2
3
4
<%
    String driver = "com.mysql.jdbc.Driver";
    Class.forName(driver);
%>
cs

위 코드를 통해 메모리에 mysql 드라이버가 로드된다.





데이터베이스 연결

1
2
3
4
5
6
7
8
<%
    String url = "jdbc:mysql://localhost:3306/test";
    String uid = "autumn";
    String upw = "8386";
    Connection connection = null;
 
    connection = DriverManager.getConnection(url, uid, upw);
%>
cs

connection 객체를 통해 데이터베이스를 연결해준다.

oracle 데이터베이스를 사용한다면 driver와 url을 oracle로 변경해주면 된다.






SQL문 실행

1
2
3
4
<%
    Statement statement;
    statement = connection.createStatement();
%>
cs

statement 객체를 통해 sql문을 실행한다.


1
2
3
<%
    resultSet = statement.executeQuery(query);
%>
cs

그리고 이렇게 결과를 저장할 수 있는데,

executeQuery() : sql문 실행 후 결과값이 나타나는 경우(ex. SELECT)

executeUpdate() : sql문 실행 후 테이블 내용만 변경되는 경우(ex. INSERT, DELETE, UPDATE)

에 사용한다.

executeQuery()의 리턴형은 ResultSet 객체이고

executeUpdate()의 리턴형은 변경된 레코드의 갯수가 int형으로 나타난다.




데이터베이스 연결해제

1
2
3
4
5
<%
    if(resultSet != null) resultSet.close();
    if(statement != null) statement.close();
    if(connection != null) connection.close();
%>
cs




결과페이지