JDBC ResultSet没有结果?

时间:2010-12-24 04:05:44

标签: java servlets jdbc

为什么这个查询没有任何结果?只有“电影!”在我运行这个servlet时打印。

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 个答案:

答案 0 :(得分:2)

最佳猜测:表格中没有行。手动执行查询时的结果是什么?

  

mysql test#connect to mysql

     

SELECT * FROM movies;

答案 1 :(得分:2)

您正在通过e.printStackTrace()向服务器日志文件编写例外而不是抛出它,以便它最终会出现在webbrowser中的一个漂亮的错误页面中。

修复如下:

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

否则,您必须深入了解服务器日志以找出问题的确切原因。


与实际问题无关,请务必在finally块中正确关闭资源。你在泄漏它们。另请参阅basic JDBC tutorial


更新:最后,您得到了问题的原因:

java.sql.SQLException: No suitable driver found

您需要download JDBC驱动程序,将JAR文件放在/WEB-INF/lib文件夹中并按照以下加载到您的代码中获取任何连接:

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

另见:

答案 2 :(得分:1)

下载MySQL JDBC驱动程序

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

将jar复制到WEB-INF / lib文件夹

答案 3 :(得分:0)

喜 在编译之前你必须将clsses12.jar或其他Ojdc14 jar文件放在类路径中然后进行编译。 这里有一些示例代码 ResultSet res = statement.executeQuery(“从FOO中选择FIRST-NAME”); StringBuffer sb = new StringBuffer(); 而(rs.next()) { sb.append( “\ n” 个+ rs.getString(1)); }

答案 4 :(得分:0)

您可以从 http://www.mysql.com/products/connector/ 下的MYSQL JDBC驱动程序下载强大的 JDBC驱动程序。将jdbc jar文件放在应用程序的位置 - / WEB-INF / lib中。

在您的代码中缺少以下语句

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

将它放在以下代码行之前

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

然后重新启动服务器。确保您的数据库服务正在运行...

并检查..

我希望你不会再犯错误了......

~Priyanjan