servlet数据库连接

时间:2012-12-22 08:17:12

标签: mysql jsp servlets

大家好我正在开发简单的jsp文件,该文件从学生那里获取一些信息,如姓名,性别,技能等,我将它指向servlet并给她数据库连接。但是当我运行代码时它没有连接到db。有人可以帮助我。这是我的servlet代码

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException 
{
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    Connection con=null;
    String url ="jdbc:mysql://localhost:3306/";
    String dbName="student_db";
    String driver = "com.mysql.jdbc.Driver";
    String username = "root";
    String password = "admin";


    String bttn_value = request.getParameter("submit");
    if(bttn_value.equalsIgnoreCase("submit"))
    {
        String name = request.getParameter("fname");

        String gender = request.getParameter("gender");
        String skill ="";
        System.out.println("2222222222");
        String skills[]= request.getParameterValues("skill");
        for(int i=0;i<skills.length;i++)
        {
            skill +=skills[i]+",";
        }
        String addr=request.getParameter("adname");
        String country = request.getParameter("country");
        Statement stmt;

    try
    {
        System.out.println("444444444444");
        Class.forName(driver).newInstance();
        System.out.println("333333333");
        con = DriverManager.getConnection(url + dbName, username,
                password);

        System.out.print("Connected to database");
        String query1= "insert into student values  name='"
             +name +"',gender='"+gender+ "',skills='"+skill + "',addname='" 
             +addr +"',country='" +country +"'";
        stmt =con.createStatement();
        stmt.executeUpdate(query1);
        out.print("<br>");
        response.sendRedirect("std.jsp");
        con.close();
        System.out.print("Disconnected from DB");

    }
    catch (Exception e)
    {
        out.println(e.getMessage());
        System.out.println("123456");

    }

这是我的控制台 enter image description here

和我得到的输出

enter image description here

提前感谢您,任何帮助都很明显。

1 个答案:

答案 0 :(得分:1)

代码不需要创建新实例来注册驱动程序。 Class.forName(driver);就足够了。

try
{
    System.out.println("444444444444");
    Class.forName(driver);
    System.out.println("333333333");
    con = DriverManager.getConnection(url + dbName, username,
            password);

    System.out.print("Connected to database");
    String query1= "insert into student values  name='"
         +name +"',gender='"+gender+ "',skills='"+skill + "',addname='" 
         +addr +"',country='" +country +"'";
    stmt =con.createStatement();
    stmt.executeUpdate(query1);
    out.print("<br>");
    response.sendRedirect("std.jsp");
    con.close();
    System.out.print("Disconnected from DB");

}

还要确保MySql JDBC驱动程序位于类路径中。你可以下载jar或从maven中取出它。

<强>的Maven

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.21</version>
</dependency>

Direct Download

要导入jar,首先下载jar文件并将其放在文件系统中,最好是在项目中。

  1. 在Eclipse中右键单击您的项目并选择属性,然后 Java Build Path
  2. 然后单击Libraries选项卡,然后单击添加JAR(如果.jar位于 你的项目)或添加外部罐子(如果.jar在外面)。
  3. 找到jar文件,然后单击“确定”。
  4. enter image description here

    要获得更有用的调试信息,请尝试在catch中打印stacktrace,一旦问题得到解决,就可以删除它。我怀疑它会告诉你它无法找到mysql驱动程序。

    catch (Exception e)
    {
        e.printStackTrace();
        out.println(e.getMessage());
        System.out.println("123456");
    
    }
    

    如果您的问题仍未解决,请发布此问题的堆栈跟踪。