前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDBC注册驱动报错

JDBC注册驱动报错

作者头像
Andromeda
发布2023-10-21 11:25:33
1780
发布2023-10-21 11:25:33
举报
文章被收录于专栏:Andromeda的专栏Andromeda的专栏

在使用下面代码注册JDBC驱动时报错。

代码语言:javascript
复制
DriverManager.registerDriver(new Driver());
f0a5611c8619
f0a5611c8619

Loading class `com.mysql.jdbc.Driver’. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver’.

看一下我们使用的这个Driver类的源代码,它继承自com.mysql.cj.jdbc.Driver,当新建这个类时,调用static方法然后报错。我们看看父类com.mysql.cj.jdbc.Driver

代码语言:javascript
复制
public class Driver extends com.mysql.cj.jdbc.Driver {
    public Driver() throws SQLException {
    }

    static {
        System.err.println("Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.");
    }
}

com.mysql.cj.jdbc.Driver的源代码如下所示,在实例化com.mysql.cj.jdbc.Driver时就直接调用了static方法注册了驱动,如果注册不成功抛出错误信息

代码语言:javascript
复制
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    public Driver() throws SQLException {
    }

    static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
}

虽然使用原来的类也能够正常使用,但是那一小段报错信息对强迫症来说很难受,所以要解决这个给问题,将import com.mysql.jdbc.Driver改为import com.mysql.cj.jdbc.Driver即可。同时根据源代码,使用后者时注册驱动直接使用new Driver()即可。再次运行,报错信息消失。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档