###前提・実現したいこと
jspとサーブレットで求人検索をするwebアプリケーションを作っています。開発環境はNetBeansとmysqlです
jspから値を取得してサーブレットからDB検索しその値と一致したレコードを表示するのをやりたいです。
###発生している問題・エラーメッセージ
DB検索機能を実装したのですがうまくできなくて困っています。エラーメッセージなどは特にありませんが、処理結果が違うのです
テーブルに入っているはずなのに画面に表示してくれません
できあがったSqlをコピーしてxamppのコンソールから入力してみるとコンソールではちゃんと表示してくれます
###該当のソースコード
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * * */ @WebServlet(urlPatterns = {"/CompanySearch"}) public class CompanySearch extends HttpServlet { public void init(ServletConfig config) throws ServletException { super.init(config); try { Class.forName("com.mysql.jdbc.Driver"); } catch (Exception e) { e.printStackTrace(); } } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response.getWriter()) { /* TODO output your page here. You may use following sample code. */ HttpSession session = request.getSession(true); request.setCharacterEncoding("UTF-8"); out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet CompanySearch</title>"); out.println("</head>"); out.println("<body>"); out.println("<center>"); out.println("<h1>就活サイト</h1>"); out.println("<table border=¥\"1¥\">"); out.println("<tr><th>企業ID<th>企業名<th>都道府県<th>住所<th>URL<th>メールアドレス<th>電話番号</tr>"); Connection con = null; PreparedStatement stmt = null; ResultSet rs = null; try { con = DriverManager.getConnection( "jdbc:mysql://localhost/*****", "****", "********"); String user = null; user = request.getParameter("userID"); String companyID = null; companyID = request.getParameter("companyID"); out.println("<p>companyID="+companyID+"</p>"); String companyName = null; companyName = request.getParameter("companyName"); out.println("<p>companyName="+companyName+"</p>"); String prefecturesID = null; prefecturesID = request.getParameter("prefecturesID"); out.println("<p>prefecturesID="+prefecturesID+"</p>"); String companyAddress = null; companyAddress = request.getParameter("companyAddress"); out.println("<p>companyAddress="+companyAddress+"</p>"); String companyURL = null; companyURL = request.getParameter("companyURL"); out.println("<p>companyURL="+companyURL+"</p>"); String companyMail = null; companyMail = request.getParameter("companyMail"); out.println("<p>companyMail="+companyMail+"</p>"); String companyCall = null; companyCall = request.getParameter("companyCall"); out.println("<p>companyCall="+companyCall+"</p>"); StringBuffer buf = new StringBuffer(); buf.append(" select * from company where "); if( companyID != null && companyID.length() != 0){ buf.append(" companyID = "); buf.append(companyID); buf.append("&&"); } if( companyName != null && companyName.length() != 0){ buf.append(" companyName = '"); buf.append( companyName ); buf.append("' &&"); } buf.append(" prefecturesID = '"); buf.append(prefecturesID); buf.append("' "); if( companyAddress != null && companyAddress.length() != 0 ){ buf.append("&&"); buf.append(" companyAddress = '"); buf.append( companyAddress); buf.append("' "); } if( companyURL != null && companyURL.length() != 0){ buf.append("&&"); buf.append(" companyURL = '"); buf.append(companyURL); buf.append("' "); } if( companyMail != null && companyMail.length() != 0){ buf.append("&&"); buf.append(" companyMail = '"); buf.append(companyMail); buf.append("' "); } if( companyCall != null && companyCall.length() != 0){ buf.append("&&"); buf.append("companyCall = '"); buf.append(companyCall); buf.append("'"); } String sql =buf.toString(); stmt = con.prepareStatement(sql); rs = stmt.executeQuery(); out.println("<p>sql"+sql+"<p>"); while (rs.next()) { out.println("<tr>"); out.println("<td>" + rs.getInt("companyID") + "</td>" ); out.println("<td>" + rs.getString("companyName") + "</td>" ); out.println("<td>" + rs.getString("prefecturesID") + "</td>" ); out.println("<td>" + rs.getString("companyAddress") + "</td>" ); out.println("<td>" + rs.getString("companyURL") + "</td>" ); out.println("<td>" + rs.getString("companyMail") + "</td>" ); out.println("<td>" + rs.getString("companyCall") + "</td>" ); out.println("</tr>"); } } catch (Exception e) { e.printStackTrace(); out.println("<p>1</p>"); } finally { try { rs.close(); } catch (Exception e) {} try { stmt.close(); } catch (Exception e) {} try { con.close(); } catch (Exception e) {} } out.println("</table>"); out.println("</center>"); out.println("</body>"); out.println("</html>"); out.close(); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. * * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> }
###試したこと
試しに
sql = select * from company
としてみたらデータをちゃんと表示してくれます
しかし、
whereの文が入ると何も表示しなくなります
sql = select * from company where prefecturesID = '北海道'
とすると何も表示しなくなります
sql = select * from company where prefecturesID = ?
stmt = con.prepareStatement(sql);
stmt.setString(n, prefecturesID);
rs = stmt.executeQuery();
みたいにやってみたりもしましたが、結局できませんでした
###補足情報(言語/FW/ツール等のバージョンなど)
companyテーブルには
|companyID | 1|
|companyName | テスト|
|prefecturesID | 北海道|
|companyAddress | 北海道函館市|
|companyURL | http://www.hogehoge.com|
|companyMail | hogehoge|
|companyCall | 04312345678|
このようなデータが入っています
prefecturesID 以外は空白での検索も可能にしたいです
ですので、最初から
sql = select * from company where companyID = ? && companyName = ? && prefecturesID = ?......
とやっていると空白で検索された場合にエラーになると考えやりませんでした
prefecturesID はhtmlのセレクトメニューで必ず47都道府県のいずれかのIDが入力されます
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/28 13:09
2016/12/28 13:14
2016/12/28 13:59 編集
2016/12/28 15:09
2016/12/28 15:36
2016/12/29 01:25
2016/12/29 09:51
2016/12/29 10:55