이클립스와 MySQL 연동
MySQL에 데이터 저장
이클립스로 만든 .jsp 파일로 "이름", "이메일" 정보를 입력할 수 있게 간단한 HTML 코드를 짠 뒤, "등록" 버튼으로 MySQL에 정보를 전송해 준다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.sql.*"%>
<!DOCTYPE html>
<% request.setCharacterEncoding("UTF-8"); %>
<%
//데이터베이스 연결 관련 변수 선언
Connection conn = null;
PreparedStatement pstmt = null;
//데이터베이스 연결 관련 정보를 문자열로 선언
String jdbc_driver = "com.mysql.cj.jdbc.Driver";
String jdbc_url = "jdbc:mysql://localhost/jspdb";
try{
//JDBC 드라이버 로드
Class.forName(jdbc_driver);
//데이터베이스 연결 정보를 이용해 Connection 인스턴스 확보
conn = DriverManager.getConnection(jdbc_url, "jspbook", "비밀번호");
//Connection 클래스의 인스턴스로 부터 SQL문 작성을 위한 Statement 준비
String sql = "insert into jdbc_test values(?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, request.getParameter("username"));
pstmt.setString(2, request.getParameter("email"));
//username 값을 입력한 경우 SQL문을 수행
if(request.getParameter("username") != null){
pstmt.executeUpdate();
}
}
catch(Exception e){
System.out.println(e);
}
%>
<html>
<head>
<meta charset="UTF-8">
<title>JDBC 테스트</title>
</head>
<body>
<center>
<H2>이벤트 등록</H2>
<HR>
<form name=form1 methid=post>
등록이름 : <input type="text" name="username"> 주소 : <input
type="text" name="email" size=20> <input type="submit"
value="등록">
</form>
<HR>
</center>
# 등록 목록
<P>
</body>
</html>
입력된 항목들은 각각 username과 email 이라는 이름의 매개변수로 전달되고 request.getParameter()를 이용하여 값을 넘겨주면 된다.
jdbctest.jsp 실행 화면
등록 버튼 클릭 후 MySQL select문 실행 후
잘 저장된 것을 확인할 수 있다. 이제 클라이언트 화면에 데이터를 출력해 보자.
<%
try {
//select 문장을 문자열 형태로 구성한다.
String sql = "select username, email from jdbc_test";
pstmt = conn.prepareStatement(sql);
//select를 수행하면 데이터 정보가 ResultSet 클래스의 인스턴스로 반환된다.
ResultSet rs = pstmt.executeQuery();
int i = 1;
//마지막 데이터까지 반복한다.
while (rs.next()) {
out.println(i + " : " + rs.getString(1) + " , " + rs.getString("email") + "<BR>");
i++;
}
//사용한 자원을 반납한다.
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
System.out.println(e);
}
%>
등록 목록의 P 태그 이후에 삽입해주면 된다.
새로운 입력 후 등록 시 실행 화면
MySQL에 또한 잘 저장되었다.
요약
데이터 전송
1. jdbc_driver 는 오라클 JDBC 드라이버의 클래스 경로 -> "com.mysql.cj.jdbc.Driver"로 바뀌었음
2. jdbc_url 은 접속하려는 데이터베이스의 정보 -> "jdbc:mysql://localhost/jspdb"
3. 1번의 클래스 경로로 Class.forName(jdbc_driver) 메서드를 이용해서 실제 클래스를 로드한다.
4. DriverManager 클래스의 getConnection() 메서드를 호출해서 인스턴스를 확보한다.
5. MySQL에 데이터를 전송하기 위해 insert 쿼리를 보내야 하는데, 편의를 위해 PreparedStatement를 이용한다.
데이터 출력
1. JDBC에서는 데이터를 ResultSet 클래스의 인스턴스로 처리한다.
2. ResultSet은 일종의 포인터 느낌으로 인덱스로 데이터를 찾기 때문에 getString() 메서드로 그 인덱스(칼럼)에 해당하는 데이터 값을 가져올 수 있다.
3. 가져온 데이터는 out.println() 메서드로 직접 데이터를 출력한다.