我有以下Java类:
package web;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
public class HelloWorld extends HttpServlet {
public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Student Name<br>");
try{
Connection conn=null;
String url = "jdbc:mysql://localhost/test";
PreparedStatement pre=null;
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn=DriverManager.getConnection(url,"root","3324911");
out.println("Database connected");
pre = conn.prepareStatement("Insert INTO countries(COUNTRY,COUNTRY_ISO_CODE,REGION) VALUES (?,?,?)");
pre.setString(1,"USA");
pre.setString(2,"US");
pre.setString(3,"North America");
pre.executeUpdate();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
}
无论出于何种原因,在Tomcat中部署此类后,程序只能到达
行 Class.forName("com.mysql.jdbc.Driver").newInstance();
它排队后会失败:
conn=DriverManager.getConnection(url,"root","3324911");
并且这个try / catch块作为一个单独的方法工作,我从另一个类的main方法中获取它,并且它正常工作。
当我在Tomcat中插入这个try / catch块时,我不确定我搞砸了。
感谢任何帮助,谢谢!
答案 0 :(得分:1)
JDBC驱动程序是在路径中配置还是复制到lib目录(即$ CATALINA_HOME / lib或web-inf / lib)?
此外,如果您使用连接池会更好 - tomcat附带一个比产生您自己的数据库连接更好的方法。
此外,如果您清理与数据库相关的资源可能会更好(除非您为了简单起见而将其从上面的代码中删除)。
希望这会有所帮助。
是的,我同意其他响应者 - 获取更详细的错误记录可能是首选路由。
答案 1 :(得分:0)
使用e.printStackTrace()而不是使用System.err.println。由于错误流被缓冲,因此可能无法刷新。使用printStacktrace可以保证您看到异常细节。
答案 2 :(得分:0)
也许你可以去tomcat logs文件夹,找一下stand-err日志文件
答案 3 :(得分:0)
请更改您的代码;
Class.forName("com.mysql.jdbc.Driver").newInstance();
到
Class.forName("com.mysql.jdbc.Driver");