Почему результаты моего запроса отображаются по-разному при отладке? - PullRequest
0 голосов
/ 24 июля 2011

Это странно ... Я отображаю результаты в таблице HTML, но получаю различное количество отображаемых результатов в зависимости от того, выполняю ли я отладку или нет.Если я медленно отлаживаюсь и нажимаю на каждую строку, то все результаты отображаются.Если я просто запустил его или не прошел по каждой строке, я получу только один результат в таблице.В любом случае набор результатов имеет правильное количество строк, просто они не отображаются в таблице правильно.

У кого-нибудь есть идеи, почему происходит такое странное поведение?Я использую Eclipse Indigo.Ниже приведен блок кода, который я использую для выбора записей и их отображения.

      try {
     String query =
     "Select * from plants where name = '"
     + name + "'";
     String plantName = "";
     ResultSet rs = sttmnt.executeQuery(query);

 while (rs.next()) { // display information for each plant.
        plantName = rs.getString(2);  // display fields in cells
        out.println("<tr><td>");
        out.println(plantName + "</td><td>");
        out.println(rs.getString(3) + "</td><td>");
        out.println("$" + rs.getString(5) + "</td><td>");
        out.println(rs.getString(4) + "</td>");
        out.println("<input type=\"hidden\" name=\"plantName" +
         plantNo + "\" value=\"" + plantName + "\">");
        out.println("<input type=\"hidden\" name=\"plantID" +
         plantNo + "\" value=\"" + rs.getString(1) + "\">");
        out.println("</tr>");
        plantNo++;
     }
     if (plantNo == 0) out.println("<tr><td align=\"center\" " +
          " colspan=\"4\">Sorry, there are currently no " + name
          + " plants for sale.</td></tr>");
     else
         out.println("<tr><td align=\"center\" " +
                 " colspan=\"4\">Showing " + plantNo
                 + " results. </td></tr>");

     out.println("</table>");
     rs.close();
  }

Ответы [ 2 ]

0 голосов
/ 24 июля 2011

Попробуйте добавить все выходные данные к StringBuffer и распечатайте все это одним махом. Вы также сэкономите на объектах. Ваш код становится:

try {
 String query = "Select * from plants where name = ?";
 sttmnt.setString(1, name);
 String plantName = "";
 ResultSet rs = sttmnt.executeQuery(query);

 StringBuffer output = new StringBuffer(); 
 while (rs.next()) { // display information for each plant.
    plantName = rs.getString(2);  // display fields in cells
    output.append("<tr><td>");
    output.append(plantName + "</td><td>");
    output.append(rs.getString(3) + "</td><td>");
    output.append("$" + rs.getString(5) + "</td><td>");
    output.append(rs.getString(4) + "</td>");
    output.append("<input type=\"hidden\" name=\"plantName" +
     plantNo + "\" value=\"" + plantName + "\">");
    output.append("<input type=\"hidden\" name=\"plantID" +
     plantNo + "\" value=\"" + rs.getString(1) + "\">");
    output.append("</tr>");
    plantNo++;
 }
 if (plantNo == 0) output.append("<tr><td align=\"center\" " +
      " colspan=\"4\">Sorry, there are currently no " + name
      + " plants for sale.</td></tr>");
 else
     output.append("<tr><td align=\"center\" " +
             " colspan=\"4\">Showing " + plantNo
             + " results. </td></tr>");

 output.append("</table>");
 out.println(output.toString());
 rs.close();
}
0 голосов
/ 24 июля 2011

Попробуйте поставить out.flush() в конце вашего кода. Вполне вероятно, что данные просто находятся в буфере, ожидая отправки, когда вы выполняете код в обычном режиме.

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