Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 搜索数据库未按预期在JSP中显示_Java_Mysql_Jsp - Fatal编程技术网

Java 搜索数据库未按预期在JSP中显示

Java 搜索数据库未按预期在JSP中显示,java,mysql,jsp,Java,Mysql,Jsp,总结: 我使用ajax和JSP实现了一个搜索功能,效果很好。然后,我想在找不到搜索词时给出一条消息,比如“找不到记录”。我在代码中加入了一个if语句,它似乎起了作用。我后来意识到if语句正在截断数据库中的一些结果,例如,如果我键入t(没有if语句),它给了我大约9条记录,但是有了if语句,它给了我大约8条记录,这是不应该的。我已经为此工作了很长时间,但我不能解决这个问题 为清晰起见,屏幕截图中没有if语句 包含if语句的屏幕截图 这是执行搜索并显示它的代码: <table align=

总结: 我使用ajax和JSP实现了一个搜索功能,效果很好。然后,我想在找不到搜索词时给出一条消息,比如“找不到记录”。我在代码中加入了一个if语句,它似乎起了作用。我后来意识到if语句正在截断数据库中的一些结果,例如,如果我键入t(没有if语句),它给了我大约9条记录,但是有了if语句,它给了我大约8条记录,这是不应该的。我已经为此工作了很长时间,但我不能解决这个问题

为清晰起见,屏幕截图中没有if语句

包含if语句的屏幕截图

这是执行搜索并显示它的代码:

<table align="center">
    <%@page import="java.sql.*" %>
    <%
        Connection con;
        PreparedStatement ps;
        ResultSet rs;
        String query;
        String se = request.getParameter("se");


            try {
                Class.forName("com.mysql.jdbc.Driver");
                con = DriverManager.getConnection("jdbc:mysql://localhost/alumni", "root", "root");
                query = "Select * from users where un like '" + se + "%' or fn like '"+se+"%' or ln like '"+se+"%' ";
                ps = con.prepareStatement(query);
                rs = ps.executeQuery();

            //if statement that seems to be causing the problem.      
            if(rs.next()){

            }else{
              out.println("No record found for "+se);
              return;
            }

                int k = 0;
                while (rs.next()) {
                    k++;
    %>
    <tr>
        <td class="go" style="width: 608px;border-radius: 6px; height: 44px;">

            <a href= 'profile.jsp?un=<%=rs.getString("un")%>' style="text-decoration: none;  ">
                <div class="search"  >
                    <!-- image -->
                    <script>
                        function imgError(image) {
                            image.onerror = "";
                            image.src = "images/avatar.jpg";
                            return true;
                        }

                    </script>

                    &nbsp;
                    <% out.println("<img onerror='imgError(this)' width = 65 height = 55 style='border-radius:5px' src=picView?un=" + rs.getString("un") + ">"
                                + "</img>");%> 
                    <div style="display: inline;"> &nbsp;<%=rs.getString("un")%> </div>
                    <div style="display: inline-block;">
                        &nbsp;<%=rs.getString("fn")%> <%=rs.getString("ln")%> </div>


                </div>   </a>



        </td>

    </tr>


    <%
                    }
                }  
             catch (Exception e) {
                    out.println("Exception "+e);
                }









    %> 

请注意:if语句放在那里是为了通知用户,如果没有找到记录,它会很好地执行其功能。 我知道我不应该使用Scriptlet,但我使用它是出于一些原因。请容忍我。
谢谢。

在做了一些研究和代码编辑之后,我意识到下面放在try块中的代码解决了问题。下面的代码:

 Class.forName("com.mysql.jdbc.Driver");
                con = DriverManager.getConnection("jdbc:mysql://localhost/alumni", "root", "root");
                 query = "Select * from users where un like '" + se + "%' or fn like '"+se+"%' or ln like '"+se+"%' ";
                 ps = con.prepareStatement(query);
                 rs = ps.executeQuery();
                if(rs.next())
                   {

                 }else{
                  out.println("No record found for "+se);
                  return;
                }
                query = "Select * from users where un like '" + se + "%' or fn like '"+se+"%' or ln like '"+se+"%' ";
                ps = con.prepareStatement(query);
                rs = ps.executeQuery();

请不要再乱写了,用EL。