티스토리 뷰

 

4. 쿼리문 실행 결과 값 가져오기

select 쿼리문 실행 시 executeQuery() 메소드를 사용하고 실행 결과를 ResultSet형으로 반환한다.

ResultSet 객체는 Statement , PreparedStatement 객체루 select문을 사용해 얻어온 레코드 값을 테이블 형태로 가진 객체이다.

ResultSet 객체 형식은 table 형식으로 준다. (스프레드 시트 생각)

 

 

 

ResultSet 객체 메소드 종류

메소드 반환 유형 설명
getXxx(int ColumnIndex) XXX 설정한 ColumnIndex(필드 순번)의 필드 값을 설정한 XXX 형으로 가져온다.
getXxx(String ColumnName) XXX 설정한 ColumnName(필드 순번)의 필드 값을 설정한 XXX형으로 가져온다.
absolute(int row) boolean 설정한 rwo행으로 커서를 이동한ㄴ다.
beforeFirst() void 첫 번째 행의 이전으로 커서를 이동한다.
afterLast() void 마지막 행의 다음으로 커서를 이동한다.
first() void 첫 번째 행으로 커서를 이동한다.
last() void 마지막 행으로 커서를 이동한다.
next() boolean 다음 행으로 커서를 이동한다.
previous() boolean 현재 행의 이전 행으로 커서를 이동한다.
close() void ResultSet 객체를 반환할 때 사용한다.

 

 

 

 

DB 연결

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/jspbookdb";
		String user = "root";
		String password = "1234";
		
		Class.forName("com.mysql.jdbc.Driver");
		conn=DriverManager.getConnection(url,user,password);
	%>
</body>
</html>

 

 

 

 

Statement 객체를 이용하여 select 쿼리문 실행 결과 값 가져오기

예제 16-4

 

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="300" border="1">
		<tr>
			<th>아이디</th>
			<th>비밀번호</th>
			<th>이름</th>
		</tr>
		<%
			ResultSet rs =null;
			Statement stmt = null;
			
			try{
				String sql = "select * from member";
				stmt = conn.createStatement();
				rs = stmt.executeQuery(sql);
				
				while(rs.next()){
					String id = rs.getString("id");
					String pw = rs.getString("passwd");
					String name = rs.getString("name");
					
		%>	
		<tr>
			<td><%=id %></td>
			<td><%=pw %></td>
			<td><%=name %></td>
		</tr>
		<% 		
				}
			}
			
			catch(SQLException ex){
				out.println("Memeber 테이블 호출이 실패했습니다. <br>");
				out.println("SQLException : " +ex.getMessage());
			}
			finally{
				if (rs != null){
					rs.close();
				}
				if(stmt!=null){
					stmt.close();
				}
				if(conn!=null){
					conn.close();
				}
			}
		%>
	</table>

</body>
</html>

 

디렉티브 include 태그를 사용하여 dbconn.jsp와 연결한다.

 

ResultSet 과 Statement 객체를 담는 변수를 만들어주는데 함수 밖에 위치한다.

함수 안에 있으면 지역변수가 되어 함수 안에서 밖에 사용을 할 수 없기 때문에 밖에 위치하여 전역변수로 사용한다.

쿼리문을 작성하여 sql 변수에 담아주었다.

Statement 객체를 생성하고 쿼리문을 실행하기 위해 executeQuery문을 사용했다.

executeQuery문을 사용할 때 파라미터로 sql 변수 값을 가져간다.

 

 

결과

 

 

 

 

PreparedStatement 객체를 이용하여 select 쿼리문 실행 결과 값 가져오기

예제 16-5

 

select02.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="300" border="1">
		<tr>
			<th>아이디</th>
			<th>비밀번호</th>
			<th>이름</th>
		</tr>
		<%
			ResultSet rs =null;
			PreparedStatement pstmt = null;
			
			try{
				String sql = "select * from member";
				pstmt = conn.prepareStatement(sql);
				rs = pstmt.executeQuery();
				
				while(rs.next()){
					String id = rs.getString("id");
					String pw = rs.getString("passwd");
					String name = rs.getString("name");
					
		%>	
		<tr>
			<td><%=id %></td>
			<td><%=pw %></td>
			<td><%=name %></td>
		</tr>
		<% 		
				}
			}
			
			catch(SQLException ex){
				out.println("Memeber 테이블 호출이 실패했습니다. <br>");
				out.println("SQLException : " +ex.getMessage());
			}
			finally{
				if (rs != null){
					rs.close();
				}
				if(pstmt!=null){
					pstmt.close();
				}
				if(conn!=null){
					conn.close();
				}
			}
		%>
	</table>

</body>
</html>

 

 

결과

 

 

 

예제 16-6

 

update01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Database SQL</title>
</head>
<body>
	<form action="updatet01_process.jsp" method="post">
		<p> 아이디 : <input type="text" name="id">
		<p> 비밀번호 : <input type="text" name="passwd">
		<p> 이름 : <input type="text" name="name">
		<p> <input type="submit" value="전송">
	</form>
</body>
</html>

 

update01_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>Database SQL</title>
</head>
<body>
	<%@ include file="dbconn.jsp" %>
	<%
		request.setCharacterEncoding("utf-8");
	
		String id = request.getParameter("id");
		String passwd = request.getParameter("passwd");
		String name = request.getParameter("name");
		
		ResultSet rs = null;
		Statement stmt = null;
		
		try
		{
			String sql = "select id, passwd from member where id='" +id+ "'";
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			
			if(rs.next())
			{
				String rid = rs.getString("id");
				String rpasswd = rs.getString("passwd");
				
				if(id.equals(rid)&&passwd.equals(rpasswd))
				{
					sql="update member set name = '" +name+ "' where id = '" +id+ "'";
					stmt = conn.createStatement();
					stmt.executeUpdate(sql);
					out.println("Member 테이블을 수정했습니다.");
				}
				else
				{
					out.println("일치하는 비밀번호가 아닙니다.");
				}
			}
			else
			{
				out.println("Member 테이블에 일치하는 아이디가 없습니다.");
			}
		}
		catch(SQLException ex){
			out.println("SQLException : " +ex.getMessage());
		}
		finally{
			if(rs!=null){
				rs.close();
			}
			if(stmt!=null){
				stmt.close();
			}
			if(conn != null){
				conn.close();
			}
		}
	%>
</body>
</html>

 

 

 

 

 

 

예제 16-7

update02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Database SQL</title>
</head>
<body>
	<form action="updatet02_process.jsp" method="post">
		<p> 아이디 : <input type="text" name="id">
		<p> 비밀번호 : <input type="text" name="passwd">
		<p> 이름 : <input type="text" name="name">
		<p> <input type="submit" value="전송">
	</form>
</body>
</html>

 

update02_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>Database SQL</title>
</head>
<body>
	<%@ include file="dbconn.jsp" %>
	<%
		request.setCharacterEncoding("utf-8");
	
		String id = request.getParameter("id");
		String passwd = request.getParameter("passwd");
		String name = request.getParameter("name");
		
		ResultSet rs = null;
		PreparedStatement pstmt = null;
		
		try
		{
			String sql = "select id, passwd from member where id=?";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, id);
			rs = pstmt.executeQuery();
			
			if(rs.next())
			{
				String rid = rs.getString("id");
				String rpasswd = rs.getString("passwd");
				
				if(id.equals(rid)&&passwd.equals(rpasswd))
				{
					sql="update member set name = ? where id = ?";
					pstmt = conn.prepareStatement(sql);
					pstmt.setString(1, name);
					pstmt.setString(2,id);
					pstmt.executeUpdate();
					out.println("Member 테이블을 수정했습니다.");
				}
				else
				{
					out.println("일치하는 비밀번호가 아닙니다.");
				}
			}
			else
			{
				out.println("Member 테이블에 일치하는 아이디가 없습니다.");
			}
		}
		catch(SQLException ex){
			out.println("SQLException : " +ex.getMessage());
		}
		finally{
			if(rs!=null){
				rs.close();
			}
			if(pstmt!=null){
				pstmt.close();
			}
			if(conn != null){
				conn.close();
			}
		}
	%>
</body>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

 

예제 16-8

 

delelte01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Database SQL</title>
</head>
<body>
	<form action="delete01_process.jsp" method="post">
		<p>아이디 : <input type="text" name="id">
		<p>비밀번호 : <input type="text" name="passwd">
		<p><input type="submit" value="전송">
	</form>
</body>
</html>

 

delelte01_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>
<%@ include file="dbconn.jsp" %>
	<%
		request.setCharacterEncoding("utf-8");
	
		String id = request.getParameter("id");
		String passwd = request.getParameter("passwd");
		String name = request.getParameter("name");
		
		ResultSet rs = null;
		Statement stmt = null;
		
		try{
			String sql = "select id,passwd from member where id = '" +id+ "'";
			stmt=conn.createStatement();
			rs=stmt.executeQuery(sql);
			
			if(rs.next()){
				String rid = rs.getString("id");
				String rpasswd = rs.getString("passwd");
				
				if(id.equals(rid)&&passwd.equals(rpasswd)){
					sql="delete from member where id = '" +id+ "' and passwd = '"+passwd+"'";
					stmt=conn.createStatement();
					stmt.executeUpdate(sql);
					out.println("Member 테이블을 삭제했습니다.");
				}
				else{
					out.println("일치하는 비밀번호가 아닙니다.");
				}
			}
			else{
				out.println("Member 테이블에 일치하는 아이디가 없습니다.");
			}
		}
		catch(SQLException ex){
			out.println("SQLException : " +ex.getMessage());
		}
		finally{
			if(rs!=null){
				rs.close();
			}
			if(stmt!=null){
				stmt.close();
			}
			if(conn!=null){
				conn.close();
			}
		}
	%>	
</body>
</html>

 

 

 

 

 

예제 16-9

 

delelte02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Database SQL</title>
</head>
<body>
	<form action="delete02_process.jsp" method="post">
		<p>아이디 : <input type="text" name="id">
		<p>비밀번호 : <input type="text" name="passwd">
		<p><input type="submit" value="전송">
	</form>
</body>
</html>

 

delelte02_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>
<%@ include file="dbconn.jsp" %>
	<%
		request.setCharacterEncoding("utf-8");
	
		String id = request.getParameter("id");
		String passwd = request.getParameter("passwd");
		String name = request.getParameter("name");
		
		ResultSet rs = null;
		PreparedStatement pstmt = null;
		
		try{
			String sql = "select id,passwd from member where id = ?";
			pstmt=conn.prepareStatement(sql);
			pstmt.setString(1,id);
			rs=pstmt.executeQuery();
			
			if(rs.next()){
				String rid = rs.getString("id");
				String rpasswd = rs.getString("passwd");
				
				if(id.equals(rid)&&passwd.equals(rpasswd)){
					sql="delete from member where id = ? and passwd = ?";
					pstmt=conn.prepareStatement(sql);
					pstmt.setString(1, id);
					pstmt.setString(2, passwd);
					pstmt.executeUpdate();
					out.println("Member 테이블을 삭제했습니다.");
				}
				else{
					out.println("일치하는 비밀번호가 아닙니다.");
				}
			}
			else{
				out.println("Member 테이블에 일치하는 아이디가 없습니다.");
			}
		}
		catch(SQLException ex){
			out.println("SQLException : " +ex.getMessage());
		}
		finally{
			if(rs!=null){
				rs.close();
			}
			if(pstmt!=null){
				pstmt.close();
			}
			if(conn!=null){
				conn.close();
			}
		}
	%>	
</body>
</html>

 

 

 

 

 

 

 

 

 

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