如何将JSP标记转换为SQL

时间:2016-05-16 18:55:19

标签: java sql eclipse oracle jsp

现在我正在开发一个Web应用程序(具有绝对有限的java / oracle sql经验),我非常渴望得到帮助。

我正在尝试从jsp页面的semester id下的value标签中获取值:

<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]

我知道这看起来像是一团糟,但我只是想找到最快的解决方案,因为我已经在这方面工作了很长时间,而且它需要在一个小时内完成。非常感谢你们所提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

我无法帮助你解决java方面问题,但是你的SQL语句似乎缺少一些连接。

你最终会在CRS_SEC_SR中的每一行与CRS_COMMENTS_SR中的每一行匹配,然后所有这些行与DEPT_SR中的每一行匹配......你最终会得到{{1行。这真的是你想要的吗?

此外,我怀疑您的问题是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 semester_id = '%semester%'是否正确?目前看起来你正在搜索一个看起来像这样的字符串:%semester%我不确定%'是否代表变量替换?如果是这样,理想情况下你应该使用绑定变量。 IME,id通常是数字。