执行SQL命令并在JSP页面中输出结果



我正在尝试连接到一个数据库,执行一个select语句,然后在JSP页面中输出该语句的结果。我已经能够连接到DB,并(我认为)执行该命令,但要么我的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时,是否有什么原因不需要使用;终止查询?

您只使用一条语句,而不使用脚本执行。;用作SQL语句之间的分隔符。所以,在你的情况下,它是无用的。如果您使用的是像SQL Developer这样的客户端,如果您按下按钮运行脚本而不是运行当前语句,则可能会获得与分隔符相同的效果。你应该知道这一点。并且高亮显示的代码只执行那些高亮显示最后一个分隔符的语句。

您需要使用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>

我已经能够连接到数据库,并且(我认为)执行命令,但要么我的ResultSet中没有任何内容,要么我没有正确显示结果

首先,您没有在jsp中打印任何内容,请按照Larry的建议添加out.print()。还要检查您是否正确地形成了查询,您可以在sql developer这样的界面中进行检查。建议在执行sql查询之前先打印它,以避免出现语法错误

此外,当我尝试使用";"运行查询时最后,它会未运行。但当我把它取下来时,它就跑了。你为什么不需要使用";"终止查询当使用JDBC时?

您不需要用分号终止sql查询,在单个查询的情况下,jdbc会这样做。看看SQL中是否需要分号?

最后,不要在jsp文件中编写java代码,尽量使用servlets(即使在MVC中也是不可取的)。请参阅如何避免JSP文件中的Java代码?

相关内容

  • 没有找到相关文章

最新更新