JDBC ResultSet результатов нет? - PullRequest
       0

JDBC ResultSet результатов нет?

0 голосов
/ 24 декабря 2010

Почему нет результатов по этому запросу? Только "Кино!" выводится при запуске этого сервлета.

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;

public class Service extends HttpServlet {
 private static final long serialVersionUID = 1L;

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  out.println("Movies!");

  Connection connection = null;
  Statement statement = null;
  try {
   connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test");   
   statement = connection.createStatement();
   String query = "SELECT * FROM movies";
   ResultSet rs = statement.executeQuery(query);
   while(rs.next()) {
    out.println("result set");
    out.print(rs.getInt(1));
    out.print(rs.getString(2));
    out.print(rs.getInt(3));
    out.print(rs.getInt(4));
   }
  } catch(SQLException e) {
   e.printStackTrace();
  }
 }
}

Ответы [ 5 ]

2 голосов
/ 24 декабря 2010

Вы записываете исключения в файл журнала сервера с помощью e.printStackTrace() вместо того, чтобы выбросить его, чтобы он попал на красивую страницу с ошибкой в ​​веб-браузере.

Исправьте это следующим образом:

throw new ServletException("Querying from DB failed!", e);

В противном случае вам придется копать в журналах сервера точную причину проблемы.


Не относится креальная проблема, не забудьте правильно закрыть свои ресурсы в блоке finally.Ты их сливаешь.См. Также базовое руководство по JDBC .


Обновление : наконец, вы получили причину проблемы:

java.sql.SQLException: No suitable driver found

Вам необходимо загрузить драйвер JDBC, поместить файл JAR в папку /WEB-INF/lib и загрузить его в свой код следующим образом: до получения какого-либо соединения:

Class.forName("com.mysql.jdbc.Driver");

См. Также:

2 голосов
/ 24 декабря 2010

Наилучшее предположение: в таблице нет строк. Каков результат при выполнении запроса вручную?

mysql test # подключиться к mysql

ВЫБРАТЬ * ИЗ КИНО;

1 голос
/ 24 декабря 2010

Загрузить драйвер MySQL JDBC из

http://dev.mysql.com/downloads/connector/j/

Скопировать jar в папку WEB-INF / lib

0 голосов
/ 24 декабря 2010

Hi. Загрузите драйвер JDBC MYSQL из http://www.mysql.com/products/connector/ в формате Драйвер JDBC для MYSQL . поместите jar-файл jdbc в папку - / WEB-INF / lib - в вашем приложении.

В вашем коде отсутствует следующее утверждение

Class.forName("com.mysql.jdbc.Driver");

Поместите его перед следующей строкой кода

connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test");

И перезапустите сервер. Убедитесь, что служба базы данных запущена ...

И проверьте ..

Надеюсь, вы больше не получите ошибку ...

~ Приянян

0 голосов
/ 24 декабря 2010

привет перед компиляцией вы должны поместить clsses12.jar или другой файл jar Ojdc14, помещенный в путь к классу, а затем сделать компиляцию пример кода здесь ResultSet res = Statement.executeQuery ("ВЫБЕРИТЕ ПЕРВОЕ ИМЯ ИЗ FOO"); StringBuffer sb = new StringBuffer (); в то время как (rs.next ()) { sb.append ( "\ п" + rs.getString (1)); }

...