0

まとめ: ajaxとJSPを使って検索機能を実装したところ、うまくいきました。次に、「レコードが見つかりません」のように検索語が見つからない場合にメッセージを表示したかったので、コードにif文を入れてみました。後で、if ステートメントがデータベースからの結果の一部を切り捨てていることに気付きました。私はこれに長い間取り組んできましたが、問題を解決できませんでした。

わかりやすくするために、if ステートメントのないスクリーンショット

if ステートメントがないと、すべてのレコードが表示されます

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 ステートメントは、レコードが見つからない場合にユーザーに通知するためにそこに配置されており、その機能を適切に実行します。スクリプトレットを使用すべきではないことは理解していますが、いくつかの理由で使用しました。ご容赦ください。ありがとう。

4

1 に答える 1

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();
于 2013-09-27T19:24:45.247 に答える