【问题标题】:servlet database connectionservlet 数据库连接
【发布时间】:2012-12-09 16:28:38
【问题描述】:

大家好,我正在开发简单的 jsp 文件,该文件从学生那里获取一些信息,例如姓名、性别、技能等,我将其引导到 servlet 并为她提供数据库连接。但是当我运行代码时,它没有连接到数据库。有人可以帮帮我吗。这是我的 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");

    }

这是我的控制台

以及我得到的输出

提前谢谢你,任何帮助都是可观的。

【问题讨论】:

    标签: mysql jsp servlets


    【解决方案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文件并点击OK。

    要获得更多有用的调试信息,请尝试在您的 catch 中打印堆栈跟踪,一旦问题解决,就可以将其删除。我怀疑它会告诉你它找不到 mysql 驱动程序。

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

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

    【讨论】:

    • 嗨,凯文,我给出了与 Class.forName(driver) 相同的内容;还打印了堆栈跟踪,它只显示 2222222222 444444444444 123456 而没有别的......
    • @Ritz 你添加 MySQL 数据库驱动了吗?
    • @Ritz 答案已更新。如果您有任何问题,请告诉我。
    • 你好我需要添加“mysql-connector-java-5.1.9”作为外部jar吗??
    • 视情况而定,如果您将其保存在项目之外,则需要使用外部 jar。如果您在项目中保存了 jar 文件,则可以使用 add jar。我所说的项目内部或外部的意思是它是在包含项目的文件夹内部还是外部。
    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 2012-02-29
    • 2012-07-27
    • 2013-01-06
    • 2012-11-25
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多