现在我正在开发一个 Web 应用程序(java/oracle sql 经验绝对有限),我非常需要帮助。
我试图从 jsp 页面的学期 id 下的值标签中获取值:
<tr>
<th><label for="semester">Semester:</label></th>
<td><select id="semester" name="semester">
<option value='1'>Spring 2007 (01/29/2007 to 05/17/2007)</option>
<option value='2'>January Intersession 2007 (01/02/2007 to 01/25/2007)</option>
<option value='3'>Fall 2006 (08/30/2006 to 12/13/2006)</option>
<option value='4'>Summer ALL 2006 (06/01/2006 to 08/17/2006)</option>
<option value='5'>Summer00 2006 (06/01/2006 to 08/17/2006)</option>
<option value='6'>Summer02 2006 (07/10/2006 to 08/17/2006)</option>
<option value='7'>Summer01 2006 (06/01/2006 to 07/06/2006)</option>
</select></td>
</tr>
和我的sql(位于另一个jsp页面的java页面中):
ResultSet rs = stmt.executeQuery("SELECT *" +
"FROM CRS_SEC_SR, CRS_COMMENTS_SR, SEMESTER_SR "+
"WHERE SEMESTER_ID = '+semester+'");
现在 WHERE SEMESTER_ID = '+semester+' ");
它报告没有任何值。
我的问题是:如何从 jsp 页面获取学期值(“1”、“2”等)到 sql -- SEMESTER_ID = [INSERT JSP VALUE HERE]
我知道这看起来一团糟,但我只是想找到最快的解决方案,因为我已经为此工作了很长时间,并且将在一个小时内完成。非常感谢您提供的任何帮助!
最佳答案
我无法在 java 方面帮助您,但是您的 SQL 语句看起来缺少一些连接。
最终,CRS_SEC_SR 中的每一行都会与 CRS_COMMENTS_SR 中的每一行相匹配,然后所有这些行都会与 DEPT_SR 中的每一行相匹配,等等...最终会得到 N*O*P*Q
行。这真的是你想要的吗?
此外,我怀疑您的问题是 CRS_COMMENTS5
后面的 *
。这要么是您使用 select *
进行测试时的遗留问题,要么是您尝试将两列相乘但忘记在第二列中添加。我怀疑是前者。
我认为你的sql语句应该类似于:
select disc,
crs_cd,
crs_sec,
meeting_days,
start_time,
stop_time,
start_date,
end_date,
building,
rm,
instructor_lname,
seats_avail,
crs_comments1,
crs_comments2,
crs_comments3,
crs_comments4,
crs_comments5
from crs_sec_sr
inner join crs_comments_sr on (<some join condition(s)>)
inner join dept_sr on (<some join condition(s)>)
inner join cours_sr on (<some join condition(s)>)
where semester_id = '%semester%'
您必须添加连接条件(并在适当的情况下将连接修改为左/右外连接)。
where season_id = '%semester%'
正确吗?目前,您似乎正在搜索如下所示的字符串: %semester%
我不确定 % 是否意味着代表变量替换?如果是这样,理想情况下您应该使用绑定(bind)变量。 IME、id 通常是数字。
关于java - 如何将 JSP 标签转换为 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37261212/