我有以下 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 block 作为一个单独的方法工作,我从另一个类的主方法中获取它,并且它工作正常。
当我在 Tomcat 中插入这个 try/catch block 时,我不确定我在哪里搞砸了。
感谢任何帮助,谢谢!
最佳答案
JDBC 驱动程序是否已在路径中配置或复制到 lib 目录(即 $CATALINA_HOME/lib 或 web-inf/lib)中?
此外,如果您使用连接池会更好 - tomcat 附带了一个连接池,这是比生成您自己的数据库连接更好的方法。
此外,如果您清理与数据库相关的资源可能会更好(除非为了简单起见,您将其从上面的代码中删除)。
希望这有帮助。
是的,我同意其他响应者的观点 - 获取更详细的错误日志记录可能是首选途径。
关于java - 我的 JDBC 连接可能有问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11922572/