java.sql.SQLException: No suitable driver found for jdbc:mysql://|为什测试类能够连接到数据库而部署的项目中不行?

本文介绍了解决在Tomcat环境下无法连接MySQL数据库的问题,分析了类加载机制可能导致的问题,并提供了一种通过主动注册驱动来解决问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

在测试类中可以通过DriverManager正常获取到Connection对象并且可以正常访问和操作数据库但是运行Tomcat时获取Connection对象时则会抛出java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/~

问题分析
  • 抛出的问题是无法找到数据库驱动包
  • 但实际上驱动是导入成功的,因为Junit进行测试时可以完成
  • 说明是运行Tomcat后没有找到驱动包
解决方案
  • 主动完成注册驱动这一步,注意不同版本的驱动名称有所区别
Class.forName("com.mysql.cj.jdbc.Driver");
  • 在mysql5之后的驱动jar包可以省略注册驱动的步骤
  • 因为在mysql-connector-java包下的\META-INF\services\java.sql.Driver文件指定了驱动的名称
com.mysql.cj.jdbc.Driver
  • 理论上在包导入后会自动完成驱动注册
public static Connection getConnection() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        Connection connection = null;
        try {
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/one_lb", "root", "12345678");
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return connection;
    }
分析原因

猜测和类的加载机制有关,暂时还不是很清楚,后续研究一下补充上来,欢迎大佬指导,说说原因

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张小李的风

谢谢老板!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值