如何将JSP标记转换为SQL
问题描述:
现在我正在研究一个Web应用程序(绝对有限的java/oracle sql经验),我非常渴望获得帮助。如何将JSP标记转换为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(依偎在Java页面在另一个JSP页面):
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
行结束。那真的是你想要的吗?
此外,我怀疑你的问题是*
以下。要么是因为您使用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 semester_id = '%semester%'
是否正确?目前,它看起来像你正在寻找一个字符串,如下所示:%semester%
我不确定%是否代表变量替换?如果是这样,理想情况下你应该使用绑定变量。 IME,ID的通常是数字。
因此,我更新了我在sql语句中所做的更改,我拿出了一大堆表(它仍然没有它),但我的困难是where语句。我不确定如何将jsp“学期”标识和值转换为数据库中的sql SEMESTER_ID值。 –
我无法帮助,对不起。希望别人能够尽快相处,并能够帮助其他人。祝你好运! – Boneist
你错过了太多的代码能够帮助你。你在另一个jsp页面上写'java页面',我不知道这意味着什么。您需要在代码中显示您检索学期输入值的位置。打印出来,以验证你有你期望的价值。另外,你的查询也会搞砸,@Boneist给你提供了指导。 – ghenghy