当前位置: 首页 > 面试题库 >

如何解决:使用池时出现“找不到适用于jdbc:mysql:// localhost / dbname的驱动程序”错误?[重复]

於子晋
2023-03-14
问题内容

这个问题已经在这里有了答案

臭名昭著的java.sql.SQLException:未找到合适的驱动程序 (13个答案)

3年前关闭。

我试图建立与数据库的连接,当我使用main方法测试代码时,它可以无缝运行。但是,当尝试通过Tomcat 7访问它时,它失败并显示以下错误:

No suitable driver found for jdbc:mysql://localhost/dbname.

我正在使用池。我将WEB-INF /
lib和.classpath中的mysql连接器(5.1.15),dbcp(1.4)和pool(1.4.5)库放入其中。我正在使用Eclipse
IDE。我的数据库驱动程序代码是:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.apache.tomcat.dbcp.dbcp.ConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.DriverManagerConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.PoolingDriver;
import org.apache.tomcat.dbcp.pool.impl.GenericObjectPool;

public class DatabaseConnector {
    public static String DB_URI = "jdbc:mysql://localhost/dbname";
    public static String DB_USER = "test";
    public static String DB_PASS = "password";

    // Singleton instance
    protected static DatabaseConnector _instance;

    protected String _uri;
    protected String _username;
    protected String _password;

    /**
     * Singleton, so no public constructor
     */
    protected DatabaseConnector(String uri, String username, String password) {
        _uri = uri;
        _username = username;
        _password = password;

        GenericObjectPool connectionPool = new GenericObjectPool(null);
        ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
            _uri, _username, _password);
        PoolableConnectionFactory poolableConnectionFactory =
            new PoolableConnectionFactory(connectionFactory, connectionPool,
                                            null, null, false, true);
        PoolingDriver driver = new PoolingDriver();
        driver.registerPool("test", connectionPool);
    }

    /**
     * Returns the singleton instance
     */
    public static DatabaseConnector getInstance() {
        if (_instance == null) {
            _instance = new DatabaseConnector(DB_URI, DB_USER, DB_PASS);
        }
        return _instance;
    }

    /**
     * Returns a connection to the database
     */
    public Connection getConnection() {
        Connection con = null;
        try {
            con = DriverManager.getConnection("jdbc:apache:commons:dbcp:test");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return con;
    }
}

我的堆栈跟踪的开始:

Apr 5, 2011 9:49:14 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Login] in context with path [/Project] 
threw exception
java.lang.RuntimeException: java.sql.SQLException: 
No suitable driver found for jdbc:mysql://localhost/dbname

是什么导致此错误?


问题答案:

尝试将驱动程序jar放在服务器lib文件夹中。($ CATALINA_HOME / lib)

我认为即使在实例化应用程序之前也需要建立连接池。(至少这是它在Jboss中的工作方式)



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

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

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

  • 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

  • 我问同样的问题,因为我没有找到答案。这是我的问题。我一直在尝试使用jdbc驱动程序连接mysql数据库。以下是我的主要sql处理程序类: 当我在普通的java代码中使用它时,一切都很好。例如,这很好: 但是,当我试图在我的servlet类中使用它时,我得到了一个错误: 没有找到适合jdbc的驱动程序:mysql://localhost/name_of_my_database. 我检查了上一个问题的

  • 由于某些原因,当我试图创建一个web服务以将id、name和idno插入mysql数据库时,下面的代码不会执行。我已经添加了MYSQL JDBC驱动程序-MYSQL连接器库,但我得到这个错误“severe:java.sql.SQLException:No appital Driver found for JDBC:MYSQL://localhost:3306/web”。我看过一些人的答案,但似乎没