2011-12-18 8 views
0

したがって、SQL文を作成しようとしていますが、いくつかの条件があります。基本的にユーザーは(JSPでHTML形式で)学期を入力し、大学院または学部のコースであれば、その基準のすべてのコースのリストが表示されます。私はこれまでのところ、この条件に応じてSQL文をWHERE句に追加します

SELECT course 
FROM coursetable 
WHERE semester = 'fall' 

は今、私はそれは、その後、あなたが大学院に入力する場合は、学部で入力すると、それは

WHERE semester ='fall' 
AND grad_level = graduate 

けどを追加することを追加したいされている何

答えて

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> 
関連する問題