0

我有以下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 块时,我不确定我在哪里搞砸了。

任何帮助表示赞赏,谢谢!

4

4 回答 4

1

JDBC驱动是在路径中配置还是复制到lib目录(即$CATALINA_HOME/lib或web-inf/lib)?

此外,如果您使用连接池会更好 - tomcat 附带一个比生成您自己的数据库连接更好的方法。

此外,如果您清理与数据库相关的资源可能会更好(除非您为了简单起见将其从上面的代码中省略)。

希望这可以帮助。

是的,我同意其他响应者的观点——获取更详细的错误日志记录可能是首选途径。

于 2012-08-12T15:42:11.860 回答
0

不要使用 System.err.println,而是使用 e.printStackTrace()。由于错误流被缓冲,它可能没有机会被刷新。使用 printStacktrace 将保证您看到异常详细信息。

于 2012-08-12T13:39:41.107 回答
0

也许你可以去tomcat日志文件夹,寻找stand-err日志文件

于 2012-08-12T15:04:14.547 回答
0

请更改您的代码;

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

   Class.forName("com.mysql.jdbc.Driver");
于 2012-08-13T04:39:06.877 回答