为什么这个查询没有任何结果?只有“电影!”在我运行这个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();
}
}
}
答案 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)
答案 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驱动程序下载
在您的代码中缺少以下语句
Class.forName("com.mysql.jdbc.Driver");
将它放在以下代码行之前
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test");
然后重新启动服务器。确保您的数据库服务正在运行...
并检查..
我希望你不会再犯错误了......
~Priyanjan