首页 > 解决方案 > 使用 servlet 和 jsp 显示表格的问题

问题描述

我有下面的servlet代码:

变量 form_date、to_date 和 link_name 是从另一个 jsp 传递的。form_date 和 to_date 是从日期范围搜索中获得的。链接名称是从下拉选择中获得的。

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {


    response.setContentType("text/html; charset=windows-1252");
    PrintWriter out = response.getWriter();


    out.println("<!DOCTYPE html>");
    out.println("<html>");
    out.println("<body>");
    out.println("<h1>IP Core Downtime</h1>");
    out.println("<TABLE cellpadding=\"15\" border=\"1\" style=\"background-color: #ffffcc;\">");
    out.println("<tr>\n"
            + "        <td>VENDOR NAME</td>\n"
            + "        <td>LINK NAME</td>\n"
            + "        <td>BASKET</td>\n"
            + "        <td>TICKET NUMBER</td>\n"
            + "        <td>IMPACTED SERVICE</td>\n"
            + "        <td>CIRCUIT ID</td>\n"
            + "        <td>ISSUE REPORTED</td>\n"
            + "        <td>BEGIN TIME</td>\n"
            + "        <td>END TIME</td>\n"
            + "        <td>RCA</td>\n"
            + "        </tr>");

    try {

        String link_name = request.getParameter("link_name");
        String form_date = request.getParameter("form_date");
        String to_date = request.getParameter("to_date");
        Date beginDateParsed = new SimpleDateFormat("yyyy-mm-dd").parse(form_date);
        String beginDate = beginDateParsed.toString();


        Date endDateParsed = new SimpleDateFormat("yyyy-mm-dd").parse(to_date);
        String endDate = endDateParsed.toString();


        String driver = "oracle.jdbc.driver.OracleDriver";
        String connectionUrl = "jdbc:oracle:thin:@//localhost:1521/";
        String database = "orclpdb";
        String userid = "";
        String password = "";
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        Class.forName(driver);
        connection = DriverManager.getConnection(connectionUrl + database, userid, password);
        statement = connection.createStatement();
        String sql = "select VENDOR_NAME,LINK_NAME,BASKET,TICKET_NUMBER,IMPACTED_SERVICE,CIRCUIT_ID,ISSUE_REPORTED,BEGIN_TIME,END_TIME,RCA from AATESTUSER.IP_CORE_AVAILABILITY_1 where BEGIN_TIME between To_Date(" + beginDate + ",'DD-MM-YY') and To_Date(" + endDate + ",'DD-MM-YY') and LINK_NAME='" + link_name + "'";
        resultSet = statement.executeQuery(sql);

        while (resultSet.next()) {

            out.println("<TR><TD>resultSet.getString(2)</TD>\n"
                    + "        <TD>resultSet.getString(3)</TD>\n"
                    + "        <TD>resultSet.getString(4)</TD>\n"
                    + "        <TD>resultSet.getString(5)</TD>\n"
                    + "        <TD>resultSet.getString(6)</TD>\n"
                    + "        <TD>resultSet.getString(7)</TD>\n"
                    + "        <TD>resultSet.getString(8)</TD>\n"
                    + "        <TD>resultSet.getString(9)</TD>\n"
                    + "        <TD>resultSet.getString(10)</TD>\n"
                    + "        </TR>");

        }
        connection.close();

    } catch (Exception e) {
        e.printStackTrace();
        out.println("Driver caused Exception : " + e.getMessage() + "");
    }

    out.close();
}

servlet 需要根据 jsp 日期范围搜索和下拉选择条件生成表。问题是只生成表格标题。表的主体显示错误 ORA-00907:缺少右括号。纠正代码的调整会带来不同的预言错误。

标签: javasqloraclejspservlets

解决方案


我认为您需要修改查询字符串以将它们包装起来datessingle quotes(')因为它们是字符串,并确保to_date函数中指定的格式与传递的字符串变量(beginDateendDate)的格式相匹配:

String sql = "select VENDOR_NAME,LINK_NAME,BASKET,TICKET_NUMBER,IMPACTED_SERVICE,CIRCUIT_ID,ISSUE_REPORTED,BEGIN_TIME,END_TIME,RCA from AATESTUSER.IP_CORE_AVAILABILITY_1 where BEGIN_TIME between To_Date('" + beginDate + "','DD-MM-YY') and To_Date('" + endDate + "','DD-MM-YY') and LINK_NAME='" + link_name + "'";

请注意,我用单引号包裹了beginDateand 。endDate

干杯!!


推荐阅读