티스토리 뷰

 

 

 

1번. JDBC를 사용하여 JSP와 데이터베이스를 연동하는 기법을 단계별로 설명하시오.

JDBC를 사용하여 JSP와 연동하는 기법 단계

1. java.sql.* 패키지 임포트

2. JDBC 드라이버 로딩 (Class.forName())

3. 데이터베이스 접속을 위한 Connection 객체 생성 (DriverManager.getConnection())

4. 쿼리문을 실행하기 위한 Statement / PreparedStatement 객체 생성

5. 쿼리 실행

6. 쿼리 실행의 결과 값 사용 (int, ResultSet)

7. 사용된 객체 종료

 

위와 같은 순서로 작성한다. 1~3은 드라이버 로딩하는 단계이고 4~5는 쿼리 실행하는 단계 6~7 쿼리를 활용하는 단계이다.

 

 

 

 

 

 

2번. JDBC 드라이버 로딩 및 DBMS 접속 기법을 예를 들어 설명하시오.

JDBC 드라이버 로딩은 드라이버 인터페이스를 구현하는 작업으로 Class.forName() 메소드를 이용하여 로딩한다.

JDBC 드라이버가 로딩이되면 자동으로 객체가 생성되고 DriverManager 클래스에 등록된다.

이후 JDBC 드라이버에서 데이터베이스와 연결된 커넥션을 가져오기 위해 DriverManager 클래스의 getConnection() 메소드를 사용한다.

사용을 다 하고나면 close()메소드를 사용해 객체를 해제한다.

 

 

 

3번. 데이터베이스 쿼리를 실행하는 Statement 객체와 PreparedStatement 객체의 차이점을 설명하시오.

Statement 객체는 정적인 쿼리를 사용하고 하나의 쿼리를 사용하고 나면 더는 사용할 수 없다.

PreparedStatement 객체는 동적인 쿼리를 사용하고 하나의 객체로 여러 번의 쿼리를 실행할 수 있다.

 

 

 

 

 

4번. PreparedStatement 객체로 데이터를 삽입하돌고 다음 조건에 맞게 JSP 애플리케이션을 만들고 실행 결과를 확인하시오.

 

inser.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="insert_process.jsp" method="post">
		<p>학번 : <input type="text" name="num">
		<p>학과 : <input type="text" name="depart">
		<p>이름 : <input type="text" name="name">
		<p>주소 : <input type="text" name="address">
		<p>연락처 : <input type="text" name="phone">
		<p> <input type="submit" value="전송">
	</form>
</body>
</html>

 

insert_process.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<%
		Connection conn = null;
		String url="jdbc:mysql://localhost:3306/ExerciseDB";
		String user="root";
		String password="1234";
		
		Class.forName("com.mysql.jdbc.Driver");
		conn=DriverManager.getConnection(url,user,password);
		request.setCharacterEncoding("utf-8");
		
		String num=request.getParameter("num");
		String depart=request.getParameter("depart");
		String name=request.getParameter("name");
		String address=request.getParameter("address");
		String phone=request.getParameter("phone");
		
		PreparedStatement pstmt=null;
		
		try{
			String sql="insert into student(num,depart,name,address,phone) values(?,?,?,?,?)";
			pstmt=conn.prepareStatement(sql);
			pstmt.setString(1,num);
			pstmt.setString(2,depart);
			pstmt.setString(3,name);
			pstmt.setString(4,address);
			pstmt.setString(5,phone);
			pstmt.executeUpdate();
			out.println("student 테이블 삽입이 성공했습니다.");
		}
		catch(SQLException ex){
			out.println("studnet 테이블 삽입이 실패했습니다. <br>");
			out.println("SQLException : "+ex.getMessage());
		}
		finally{
			if(pstmt!=null){
				pstmt.close();
			}
			if(conn!=null){
				conn.close();
			}
		}
	%>
</body>
</html>

 

 

값을 입력하기 전 테이블 조회 결과

 

 

form에 값들을 입력해주었다.

 

값을 입력한 후 테이블 조회 결과

 

 

 

 

 

 

 

 

5번. PreparedStatement 객체로 데이터를 조회하도록 다음 조건에 맞게 JSP 애플리케이션을 만들고 실행 결과를 확인하시오.

 

dbconn.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>       
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		Connection conn = null;
		String url="jdbc:mysql://localhost:3306/ExerciseDB";
		String user="root";
		String password="1234";
		
		Class.forName("com.mysql.jdbc.Driver");
		conn=DriverManager.getConnection(url,user,password);
	%>
</body>
</html>

 

select.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>     
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%@include file="dbconn.jsp" %>
	<table width="500" border="1">
		<tr>
			<th>학번</th>
			<th>학과</th>
			<th>이름</th>
			<th>주소</th>
			<th>연락처</th>
		</tr>	
	<%
		request.setCharacterEncoding("utf-8");
		

		PreparedStatement pstmt=null;
		ResultSet rs=null;
		
		try{
			String sql="select * from student";
			pstmt=conn.prepareStatement(sql);
			rs=pstmt.executeQuery();
			
			while(rs.next()){
				String num=rs.getString("num");
				String depart=rs.getString("depart");
				String name=rs.getString("name");
				String address=rs.getString("address");
				String phone=rs.getString("phone");
		%>
		<tr>
			<td><%=num %></td>
			<td><%=depart %></td>
			<td><%=name %></td>
			<td><%=address %></td>
			<td><%=phone %></td>
		</tr>
		<% 	
			}
		}
		catch(SQLException ex){
			out.println("호출에 실패했습니다.");
			out.println("SQLException : "+ex.getMessage());
		}
		finally{
			if(rs!=null){
				rs.close();
			}
			if(pstmt!=null){
				pstmt.close();
			}
			if(conn!=null){
				conn.close();
			}
		}
	%>
	</table>
</body>
</html>

 

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday