2011-12-18 2 views
0

그래서 SQL 문을 만들려고하고 있는데 어떤 조건이 있습니다. 기본적으로 사용자는 (JSP로 HTML 형식으로) 학기를 입력하고 대학원 또는 학부 과정 인 경우 해당 기준의 모든 과정 목록이 표시됩니다.SQL은 조건에 따라 WHERE 절에 변수 문자열을 추가합니다.

는 내가 지금까지 가지고하는 것은 당신이 대학원에 입력하면 당신은 학부를 입력하면, 다음 다음에게 그것을

WHERE semester ='fall' 
AND grad_level = graduate 

을 추가하지만 것이라는 점을 추가 할 지금이

SELECT course 
FROM coursetable 
WHERE semester = 'fall' 

입니다 추가 할 것입니다

WHERE semester ='fall' 
AND grad_level = undergraduate 

답변

1

(JDBC를 사용하는 경우) 다음과 같이 매개 변수를 사용하도록 SQL 쿼리를 설정하십시오.

String strSQL = "SELECT course FROM coursetable WHERE semester = ? AND grad_level = ?"; 

Java 코드에서 전화를 걸면 매개 변수로 "semester"및 "gradLevel"을 추가합니다. 이렇게하면 사용자의 입력에 strSemester 및 strGradLevel을 설정 한 것으로 가정한다

PreparedStatement pstmt = connection.prepareStatement(strSQL); 
pstmt.setString(1, strSemester); 
pstmt.setString(2, strGradLevel); 

: 당신이 JDBC를 사용하는 경우 다시 말하지만, 그것은 다음과 같이 보일 것입니다.

1

실제로 비즈니스 로직을 뷰 (예 : jsp)와 분리해야하므로 실제로는 연습용이라고 가정합니다. mvc을 검색하여 적합한 프레임 워크를 선택하십시오. prepared statement도 사용하십시오.

단순히 SQL을 수행 작업이

SELECT course FROM coursetable WHERE semester = ? AND grad_level = ? 

해야 얻을하고 준비된 명령문에 설정하여 매개 변수를 사용합니다.

동적으로 열을 추가하고 제거해야하는 경우 StringBuilder를 사용하고 추가하는 것이 가장 빠릅니다. 그러나 이에 대한 프레임 워크가 있습니다. Squiggle

1

JSTL 조건을 사용하여 쿼리를 동적으로 변경할 수 있습니다.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
. . . 
<sql:query dataSource="jdbc/example" var="courses"> 
SELECT course FROM courseTable WHERE semester=? 
<sql:param value="${semester}"/> 
<c:if test="${not empty param.graduate}"> 
AND grad_level=? 
<sql:param value="${param.graduate}"/> 
</c:if> 
</sql:query> 
관련 문제