我的JDBC连接可能有问题?

时间:2012-08-12 13:34:38

标签: java mysql java-ee jdbc

我有以下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 个答案:

答案 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");