//Google AdSense

검색조건 (select 쿼리문) >>>>> 검색결과 

-다양한 경우의 수 존재


m_search_form.jsp에 검색 화면을 생성

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<form action="<%=request.getContextPath()%>/msearch/m_search_list.jsp" method="post">
	<select name="sk"> <!-- sk=m_id & sv=입력한값  -->
		<option value = "m_id">아이디</option>
		<option value = "m_level">권한</option>
		<option value = "m_name">이름</option>
		<option value = "m_email">이메일</option>
	</select>
	<input type="text" name="sv">
	<input type="submit" name="검색버튼">
</form>


m_search_list.jsp에 변수 sk / sv를 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@ include file = "/msearch/m_search_form.jsp"  %>

<% 
request.setCharacterEncoding("euc-kr");
String sk = request.getParameter("sk");
String sv = request.getParameter("sv");
System.out.println(sk + "<-sk");
System.out.println(sv + "<-sv");
%>

 


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@ include file = "/msearch/m_search_form.jsp"  %>

<% 
request.setCharacterEncoding("euc-kr");
String sk = request.getParameter("sk");
String sv = request.getParameter("sv");
System.out.println(sk + "<-sk");
System.out.println(sv + "<-sv");

if(sk == null && sv == null){
	System.out.println("1-1 sk, sv 둘 다 null");
} else if (sk != null & sv.equals("")){
	System.out.println("1-2 sk O / sv 공백");
} else if (sk != null & sv != null){
	System.out.println("1-3 sk, sv 둘 다 있음");
}

%>


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException" %>

<a href="<%= request.getContextPath() %>/minsert/m_insert_form.jsp">회원가입버튼</a><br><br>

<%@ include file="/msearch/m_search_form.jsp" %>

<br>
회원 리스트 <br>
<table width="100%" border="1">
<tr>
	<td>아이디</td><td>비번</td><td>권한</td><td>이름</td><td>이메일</td><td>수정</td><td>삭제</td>
</tr>
<%
request.setCharacterEncoding("euc-kr");
String sk = request.getParameter("sk");
String sv = request.getParameter("sv");
System.out.println(sk + "<-- sk ");
System.out.println(sv + "<-- sv ");

Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;

Class.forName("com.mysql.jdbc.Driver");
try{
	String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
			"useUnicode=true&characterEncoding=euckr";
	String dbUser = "dev35id";
	String dbPass = "dev35pw";
	conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
	System.out.println(conn + "<-- conn m_list.jsp");
	String selectQuery = "select * from tb_member";
	if(sk == null & sv == null){
		System.out.println("01_01 둘다 null 조건");
		pstmt = conn.prepareStatement(selectQuery);
	}else if(sk != null & sv.equals("")){
		System.out.println("01_02 sk있고 sv는 공백 조건");
		pstmt = conn.prepareStatement(selectQuery);
	}else if(sk != null & sv != null){
		System.out.println("01_03 sk있고 sv있는 조건");
		pstmt = conn.prepareStatement(selectQuery + " WHERE " + sk + " = ?");
		pstmt.setString(1, sv);
	}
	
	out.println(pstmt + " <br><br>");
	
	System.out.println(pstmt + "<-- pstmt m_list.jsp");
	rs = pstmt.executeQuery();
	System.out.println(rs + "<-- rs m_list.jsp");
	//System.out.println(rs.next() + "<-- rs.next() m_list.jsp");
	//if(rs.next()){
	while(rs.next()){		
		System.out.println("while 조건문 통과완료");
%>
<tr>
	<td> <%= rs.getString("m_id")%>	</td>
	<td> <%= rs.getString("m_pw")%>	</td>
	<td> <%= rs.getString("m_level")%>	</td>
	<td> <%= rs.getString("m_name")%>	</td>
	<td> <%= rs.getString("m_email")%>	</td>
	<td>
<a href="<%= request.getContextPath() %>/mupdate/m_update_form.jsp?send_id=<%= rs.getString("m_id")%>">수정버튼</a>
	<!-- http://localhost:8007/mysqljsp35/mupdate/m_update_form.jsp?send_id=id005 -->
	</td>
	<td>
<a href="<%= request.getContextPath() %>/mdelete/m_delete_pro.jsp?send_id=<%= rs.getString("m_id")%>">삭제버튼</a>
	</td>	
	
</tr>	
<%		
	}
} catch(SQLException ex) {
	System.out.println(ex.getMessage());
	ex.printStackTrace();
} finally {
	if (rs != null) try { rs.close(); } catch(SQLException ex) {}
	if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
	if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
</table>

 

pstmt = conn.prepareStatement("SELECT * FROM tb_member WHERE ? = ?");
pstmt.setString(1, sk);
pstmt.setString(2, sv);

 

 

 

conn.prepareStatement 메서드에 쿼리문을 위 처럼 설정했을 경우

쿼리문장이 ex) SELECT * FROM tb_member WHERE 'm_id' = 'id' 이렇게 입력되어 오류가 발생한다.

"select * from tb_member where "+ sk + "= ? "

때문에 위와 같이 문자열 연결 연산자를 통해 sk를 연결해주었다.


검색이 잘 된다!

 

+ Recent posts