티스토리 뷰
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>
'코딩 > JSP' 카테고리의 다른 글
[11주 5일차] JSP 표준 태그 라이브러리 (1) | 2023.12.22 |
---|---|
[쉽게 배우는 JSP 웹 프로그래밍 연습문제] 16장 (2) | 2023.12.21 |
웹쇼핑몰 : 상품 관리 테이블 생성 및 상품 등록하기 (0) | 2023.12.21 |
[쉽게 배우는 JSP 웹 프로그래밍 연습문제] 15장 (2) | 2023.12.21 |
[11주 3일차] JDBC로 데이터베이스와 JSP 연동 (1) (0) | 2023.12.20 |
- Total
- Today
- Yesterday