当前位置: 首页 > 知识库问答 >
问题:

找不到适合jdbc:mysql://localhost/database的驱动程序

徐俊人
2023-03-14

我问同样的问题,因为我没有找到答案。这是我的问题。我一直在尝试使用jdbc驱动程序连接mysql数据库。以下是我的主要sql处理程序类:

package com.arslanjava.model;

import java.sql.*;

public class SqlHandler {
    private Connection myConnection;
   // final private String serverName = "localhost" ;
    //final private String port = "3306" ;
    //final private String user = "root" ;
   // final private String password = "password" ;

    public SqlHandler ( String username , String password , String fname , String lName ) throws SQLException {
        if ( username != null  && password != null && fname != null && lName != null ) {

            //Establish connection to the server.
            this.establishConnection();

            //execute the addUser method
            this.addUser(username,password,fname,lName);

            //close this connection
            this.close();


        } else {
            throw new NullPointerException () ;
        }
    }


    public SqlHandler()  {

    }

    public void addUser (String us , String pas , String fName , String lName ) throws SQLException {
        PreparedStatement statement = myConnection.prepareStatement("INSERT INTO user_info (username, password, first_name, last_name) VALUES (?,?,?,?)");
        statement.setString(1,us);
        statement.setString(2,pas);
        statement.setString(3,fName);
        statement.setString(4,lName);
        statement.executeUpdate();
    }

    public void establishConnection () throws SQLException {
        myConnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/app1","root","password") ; ;
    }

    public void close() {
        if (myConnection != null) {
            try {
                myConnection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

当我在普通的java代码中使用它时,一切都很好。例如,这很好:

package com.arslanjava.model;

import com.arslanjava.model.SqlHandler;

import java.io.IOException;
import java.net.ServerSocket;
import java.sql.SQLException;

public class Test {
    public static void main(String[] args) {
        SqlHandler handler = new SqlHandler() ;
        try {
            handler.establishConnection();
            handler.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}

但是,当我试图在我的servlet类中使用它时,我得到了一个错误:
没有找到适合jdbc的驱动程序:mysql://localhost/name_of_my_database.
我检查了上一个问题的答案,它说这是由2件事引起的:

  1. 错误的网址,我查过了,没问题。(jdbc:mysql://localhost:3306/app1)
  2. 我没有在tomcat的lib文件夹中添加jar文件,我添加了jar文件,但仍然出现了相同的错误。(截图:https://prnt.sc/k2qlxa ,https://prnt.sc/k2qm1e,http://prntscr.com/k2qm5h)
    我还将这个jar文件添加到WEB-INF/lib文件夹中,但该文件夹也不起作用<还有什么我可以试试的吗?请帮我理解这里的问题,因为我无法解决

下面是我的servlet类:

package com.arslanjava.web;

import com.arslanjava.model.SqlHandler;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.sql.SQLException;

public class MyRegServlet extends HttpServlet {

    @Override
    public void doPost (HttpServletRequest request , HttpServletResponse response) {
        String username = request.getParameter("us") ;
        String password = request.getParameter("psw") ;
        String first_name = request.getParameter("fname");
        String last_name = request.getParameter("lname") ;
        try {
            SqlHandler handler = new SqlHandler(username,password,first_name,last_name) ;
        } catch (SQLException e) {
            request.setAttribute("errorCode","5xx");
            request.setAttribute("errorMessage",e.toString());
            e.printStackTrace();
            RequestDispatcher dispatcher = request.getRequestDispatcher("customErroPage.jsp") ;
            try {
                dispatcher.forward(request,response);
            } catch (ServletException | IOException e1) {
                e1.printStackTrace();
            }
        }
    }

}

共有2个答案

仉洲
2023-03-14

唯一能帮我解决这个问题的是使用Class.forName

try {
    Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

当然,这应该已经成为多余的早在1923年,但把mysql连接器jar文件几乎无处不在,这是唯一的工作。

陆高峰
2023-03-14

你试过用这条线吗?

类。forName(“com.mysql.jdbc.Driver”);//在代码中包含这一行

如果没有,请尝试在该函数中添加此行。

public void establishConnection() throws SQLException {
   myConnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/app1","root","password");
}

 类似资料:
  • 问题内容: 使用Java,尝试连接到mysql数据库时出现此错误: 我正在使用驱动程序。它在我的构建路径中。我已经重启了MySQL。我还从命令行使用root用户登录,没有密码,并且连接正常。我目前在netstat中没有看到端口3306。以前我遇到了另一个错误(我没有更改代码)。错误是“用户’root’@’localhost密码NO拒绝jdbc mysql访问” 问题答案: 在这种特殊情况下(假设没

  • 问题内容: 我正在尝试将我的代码从linux移植到mac OSX LION。以下方法在Linux上正常工作。 但这在我的Mac上不起作用。我正在使用XAMMP,因此数据库的路径为。我读到的错误 基于以下帖子的反馈进行的更新: 我下载了jar并将其添加到项目的构建路径。当我尝试添加时,出现编译错误,因此我将其注释掉。然后,我运行程序以获取以下错误: 问题答案: JAVA JDK不附带特定的SQL驱动

  • 问题内容: 这个问题已经在这里有了答案 : 臭名昭著的java.sql.SQLException:未找到合适的驱动程序 (13个答案) 4年前关闭。 使用Java,尝试连接到mysql数据库时出现此错误: 我正在使用驱动程序。它在我的构建路径中。我已经重启了MySQL。我还从命令行使用root用户登录,没有密码,并且连接正常。我目前在netstat中没有看到端口3306。以前我遇到了另一个错误(我

  • java.sql.sqlexception:未找到适用于JDBC的驱动程序:MySQL/localhost:3306/World在java.sql.drivermanager.getConnection(drivermanager.java:689)在java.sql.drivermanager.getConnection(drivermanager.java:247)在db.main(db.ja

  • 我正在尝试Tomcat8.0中的应用程序,但我得到了错误 org.springframework.JDBC.CanNotGetJdbcConnectionException:无法获取JDBC连接;嵌套异常为java.sql.sqlexception:未找到适用于JDBC的驱动程序:mysql:/ip:3306/Durga_Dev?Characterencoding=UTF-8 我正在使用 Tomc

  • null servet是一个简单的“Hello World”servlet,只是为了测试连接。