首页 > 解决方案 > 同一个 JSP 页面上的多个 Java Scriptlet

问题描述

我想用 WHERE 子句选择 SQL 数据,但我不知道如何使用它。

我预期的 SQL 查询:SELECT * FROM OLSUSER WHERE user=login_user;

这是我的带有 Java Sciptlet 标记的 HttpSession

<%
    HttpSession sessions = request.getSession(false);
    String login_user = (String) sessions.getAttribute("l_user");
    String login_role = (String) sessions.getAttribute("l_role");
%>

这是带有 Sciptlet 标记的 SQL 选择

<%
    try {
        Class.forName("org.apache.derby.jdbc.ClientDriver");
        Connection con = (Connection) DriverManager.getConnection(
                "jdbc:derby://localhost:1527/sample", "app", "app");

        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery("select * from OLSOrder");
%><table border=1 align=center style="text-align: center">
            <tbody>
                <tr>
                   //table data

标签: jspscriptlet

解决方案


您可以使用PreparedStatement在查询中传递值select。例如:-

<%
    HttpSession sessions = request.getSession(false);
    String login_user = (String) sessions.getAttribute("l_user");
    String login_role = (String) sessions.getAttribute("l_role");
    try {
        Class.forName("org.apache.derby.jdbc.ClientDriver");
        Connection con = (Connection) DriverManager.getConnection(
                "jdbc:derby://localhost:1527/sample", "app", "app");
        //passing your query in preparestatement using (?)   
         PreparedStatement ps = con.prepareStatement("select * from OLSUSER  where user=?");
           //putting value for placeholder (?)
              ps.setString(1,login_user);
             ResultSet resultset= ps.executeQuery();
     %>
 <!--printing table-->
    <table align="center" cellpadding="2" cellspacing="2" border="1">
             <tr bgcolor="#d9ac26">
                  <th>Columnname</th>
                  <th>Columnname </th>
                  <!--print same as above--> 
              </tr>
                <% while(resultset.next()){ %>       
             <tr>
                 <td><%=resultset.getString("yourcolumnname")%> </td>
                 <td><%=resultset.getString("yourcolumnname")%> </td>
               <!--print same as above-->
              </tr>
              <% } %>
          </table>

推荐阅读