【问题标题】:Executing a SQL command and outputting results in a JSP page执行 SQL 命令并在 JSP 页面中输出结果
【发布时间】:2015-01-07 02:59:11
【问题描述】:

我正在尝试连接到数据库,执行 select 语句,然后在 JSP 页面中输出该语句的结果。我已经能够连接到数据库,并且(我认为)执行命令,但是我的 ResultSet 里面没有任何内容,或者我没有正确显示结果。

我查看了一些如何完成此操作的示例,我的代码几乎相同。当我运行代码时,生成的网页只有输出数据应该存在的这些空行。但是,它确实有三行空行,这是查询应返回的元组数。我的代码是:

            String query = "SELECT L.O_ID, L.INV_ID, L.OL_QUANTITY, L.OL_PRICE "
                    + "FROM ORDERS O, ORDER_LINE L, ORDERSOURCE S "
                    + "WHERE S.OS_DESC = 'Web Site' "
                    + "AND O.OS_ID = S.OS_ID "
                    + "AND L.O_ID = O.O_ID";
            System.out.println(query);
            ResultSet results = statement.executeQuery(query);
            %>

            <table border="1" width="50%" cellspacing="1" cellpadding="0" bordercolor="black" border="1">
                <tr>
                    <th><font size="2"/>Order ID</th>
                    <th><font size="2"/>Inventory ID</th>
                    <th><font size="2"/>Quantity</th>
                    <th><font size="2"/>Price</th>
                </tr>
            <%while(results.next()) { %>
            <tr>
                <td><% results.getString("O_ID"); %></td>
                <td><% results.getString("INV_ID"); %></td>
                <td><% results.getString("OL_QUANTITY"); %></td>
                <td><% results.getString("OL_PRICE"); %></td>
            </tr>
            <% } %>

            </table>
    </body>
</html>

另外,当我尝试在最后运行带有; 的查询时,它不会运行。但是当我删除它时它运行了。使用 JDBC 时是否有某些原因不需要使用 ; 终止查询?

【问题讨论】:

    标签: java sql jsp jdbc oracle12c


    【解决方案1】:

    您只使用一个语句,而不是使用脚本来执行。 ; 用作 SQL 语句之间的分隔符。所以,在你的情况下它是没有用的。如果您使用 SQL Developer 之类的客户端,如果您按下按钮来运行脚本而不是运行当前语句,则可能会达到与分隔符相同的效果。你应该知道。并且您突出显示的代码仅执行那些突出显示最后一个分隔符的语句。

    【讨论】:

    • "您突出显示的代码只执行那些突出显示最后一个分隔符的语句。"嗯?你能详细说明一下吗?我不明白。
    【解决方案2】:

    您需要使用 out.print 函数来显示这些结果。

    所以你要显示的代码应该是:

    <td><% out.print(results.getString("O_ID")); %></td>
    <td><% out.print(results.getString("INV_ID")); %></td>
    <td><% out.print(results.getString("OL_QUANTITY")); %></td>
    <td><% out.print(results.getString("OL_PRICE")); %></td>
    

    【讨论】:

      【解决方案3】:

      我已经能够连接到数据库,并且(我认为)执行 命令,但要么我的 ResultSet 里面什么都没有,要么我没有 正确显示结果

      首先,你没有在jsp中打印任何东西,按照Larry的建议添加out.print()。另外检查你是否正确形成了查询,你可以在sql developer这样的界面中检查。建议在执行之前打印sql 查询以避免语法错误

      此外,当我尝试使用 ';' 运行查询时最后,它会 不跑。但是当我删除它时它运行了。有什么理由你不 需要用 ';' 终止查询什么时候使用 JDBC?

      您无需使用分号终止sql 查询,jdbc 会在单个查询的情况下为您执行此操作。看看Is the semicolon necessary in SQL?

      最后,不要在jsp文件中写java代码,尽量使用servlets(即使在MVC中也不可取)。参考How to avoid Java code in JSP files?

      【讨论】:

        猜你喜欢
        • 2013-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        • 2017-05-14
        • 2018-01-16
        相关资源
        最近更新 更多