mysql - servlet 数据库连接

标签 mysql jsp servlets

大家好,我正在开发简单的 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");

    }

这是我的控制台 enter image description here

以及我得到的输出

enter image description here

预先感谢您,任何帮助都是值得赞赏的。

最佳答案

代码不需要创建新实例来注册驱动程序。 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 构建路径
  2. 接下来单击Libraries 选项卡,然后单击“添加 JAR”(如果 .jar 位于 您的项目)或添加外部 Jars(如果 .jar 在外部)。
  3. 找到 jar 文件并单击“确定”。

enter image description here

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

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

}

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

关于mysql - servlet 数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14001198/

相关文章:

mysql - CSV 文件从 Excel 到 MySQL 的字符编码

java - 通过我的应用程序 JSP 中嵌入的 URL 访问 Jasper Server 上的报告

html - 在 JSP 表单中使用 Web 模板

mysql - 对于空值,计数无法正常运行

mysql - 我需要在 SQL 语句中添加引号吗?

javascript - 跟踪像素可以从远程服务器执行 javascript 吗?

javascript - 我如何在数据表中搜索 - 使用 ajax/服务器端加载数据

java - Servlet 不初始化

MySQL 排行榜

java - 在 JSP 或 JVM 中设置区域设置无法正确格式化数字