Сервлет с двумя циклами результатов - PullRequest
0 голосов
/ 08 июня 2018

в моем сервлете я присоединился к двум таблицам и хочу, чтобы одна таблица отображалась одна, а другая - до тех пор, пока не отображаются данные.Этот сервлет будет отображать свой атрибут на основе выбранного идентификатора,

вот код

 Connection con;
    PreparedStatement ps;
    ResultSet rs;
    try{
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/kps","root","KPSAdmin1234!");
        ps = con.prepareStatement("Select * from applicant a INNER JOIN JOB B where A.J_ID = B.J_ID AND B.J_ID = '" + j_id + "'" );
        rs = ps.executeQuery();

        while(rs.next())
        {
            //1st table

            String j_title = rs.getString("j_title");
            String j_description = rs.getString("j_description");
            String j_location = rs.getString("j_location");
            String j_type = rs.getString("j_type");
            String j_empType = rs.getString("j_empType");
            String d_name = rs.getString("d_name");
            String j_responsibilities = rs.getString("j_responsibilities");
            String j_salary = rs.getString("j_salary");

            //2nd table
            String js_id = rs.getString("js_id");
            String js_name = rs.getString("js_name");
            String js_ic = rs.getString("js_ic");
            String js_mobile = rs.getString("js_mobile");
            String js_email = rs.getString("js_email");

            //<!-- want to display once -->
            pw.println("<div class=\"panel-body\">");
            pw.println("<title>"+j_title+"</title>");

            pw.println("<div class=\"column left\">");
            pw.println("<div style=\"font-family: Barlow;\">");
            pw.println("<font size = \"5\";>"  + j_title+"</font>");
            pw.println("<h5><font size = \"2\";>&nbsp;<img src=\"img/location.png\"style=\"width:12px;height:12px;\">&nbsp;&nbsp;&nbsp;" + j_location + "</td>");

            pw.println("<br><br><strong><p>RESPONSIBILITIES</p></strong>");
            pw.println("<br><p>" +  j_responsibilities + "</p><br></td>");
            pw.println("<br><br><strong><p>REQUIREMENT</p></strong>");
            pw.println("<br><p>" +  j_description + "</p></td>");
            pw.println("</div>");
            pw.println("</div>");

            pw.println("<div class=\"column right\">");

            pw.println("<br>&nbsp;<img src=\"img/rm.png\"style=\"width:16px;height:16px;\">&nbsp;&nbsp;&nbsp;"  + j_salary );
            pw.println("<br>&nbsp;<img src=\"img/check.png\"style=\"width:14px;height:14px;\">&nbsp;&nbsp;&nbsp;"  + j_type );
            pw.println("<br>&nbsp;<img src=\"img/briefcase.png\"style=\"width:14px;height:14px;\">&nbsp;&nbsp;&nbsp;" + j_empType + "<br><br>");

            pw.println("</div>");
            pw.println("</div>");
            pw.println("</div>");
            pw.println("</div>");
            //<!--end of display once-->

            //want to display as long as there is data in the database so basically while(rs.next()) 
            pw.println("<div class=\"row\">");
            pw.println("<div class=\"col-lg-12\">");
            pw.println("<section class=\"panel\">");
            pw.println("<header class=\"panel-heading\">List Of Applicant</header>");
            pw.println("<div class=\"panel-body\">");
            pw.println("<br><font size = \"3\"<br><a href='resume.jsp?js_id=" + js_id +"'>" +js_name+ "</a></font>");
            pw.print(" <font size=\"2\" "+ js_ic +"&ensp;|&ensp;" +js_email +"&ensp;|&ensp;"+ js_mobile);

            pw.println("&ensp;&ensp;<a class=\"btn btn-primary\" href='ViewJobApplicant?js_id=" + js_id +"'>View Response</a></font>");

        }

как я могу это сделать? viewservlet

Я пытался выставить 1-ю таблицу снаружи, но все, что я получил, это ошибка

 java.sql.SQLException: Before start of result set

да, так что должно быть в то время, так чтоЯ сделал два, в то время как каждый с разными SQL-запросами, и ошибка сказала, что он не может запустить другой, в то время как, когда какое-то время остановилось.

Есть ли какое-нибудь решение?

1 Ответ

0 голосов
/ 08 июня 2018

Показанный вами SQL вернет много строк для первой таблицы applicant с сопровождающими строками второй job.Ну ... у вас есть две проблемы в вашем коде:

  • Вам нужно ORDER BY строк по первым строкам таблицы.Возможно, вы хотите использовать ключ, в идеале первичный ключ таблицы.Что-то вроде order by applicant.id.

  • Во-вторых, вам нужно «обнаружить», когда вы переходите с одного applicant на следующий.Вам нужно добавить логику, чтобы получать строки, которые обнаруживают изменения кандидата, и отображать их соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...