2013-09-26 75 views
0

摘要: 我使用ajax和JSP實現了搜索功能,它運行良好。然後,如果搜索項無法找到,例如「找不到記錄」 。我在我的代碼中放了一條if語句,它似乎工作。後來我意識到if語句正在截斷數據庫中的一些結果,例如,如果我輸入t(沒有if語句),它會給我9條記錄,但if語句讓我喜歡8條記錄,這並不意味着如此。我一直在研究這個問題很長一段時間,但我不能解決問題。搜索數據庫在JSP中未按預期方式顯示

爲了清楚起見,截圖沒有if語句

Without the if statement all the records are displayed

截圖與if語句包含 With the if statement,less records are being displayed

這是進行搜索並顯示它的代碼:

<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語句放在那裏以通知用戶記錄是否爲n沒有發現,並且它的功能很好。 我知道我不應該使用scriptlets,但是由於某種原因我使用了它。請耐心等待。 謝謝。

+2

沒有更多的腳本請。使用EL。 –

+0

http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files?rq=1 – adarshr

回答

0

在做了一些研究和代碼編輯之後,我意識到下面放在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();