Java连接access数据库打包成jar包运行显示无合适驱动

这是我在做一个小实验遇到的情况。

连接Access数据库用的是ucanaccess驱动,添加了所需的连接jar包后就可以连接上。

由于我记得JDK 7 之后就不用显式加载JDBC驱动,因此在java源代码中就没有显式加载,具体代码如下:

String url = "jdbc:ucanaccess://./university_A5.accdb";
Connection connection = DriverManager.getConnection(url)

然后就可以通过connection执行SQL语句了。

但打包成jar包运行的时候显示

An error occurred during login: No suitable driver found for jdbc:ucanaccess://xxxx.accdb

也是查阅了很多资料,包括打包jar的时候添加源项目用到的驱动jar包,或者运行jar包的时候添加所需jar包的类路径classpath,抑或是在MANIFEST.MF添加classpath,但还是出现上述报错。

查询了gpt,其给出了一种错误原因和解决思路:

JDBC 驱动路径:当你在 IDE 中运行程序时,IDE 会自动加载所需的驱动,而打包成 JAR 后,需要确保 JDBC 驱动能够被找到。可以在代码中显式地加载驱动:

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");

因此代码修改为:

String url = "jdbc:ucanaccess://./university_A5.accdb";
        // 显式加载 JDBC 驱动
        try {
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
            System.out.println("Driver loaded successfully.");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            // 或者处理驱动未找到的情况
        }

Connection connection = DriverManager.getConnection(url)

也就是强制显式加载驱动。

重新打包成jar包后可以正常运行。花费了一两天时间找bug,还是IDE太先进了呀hhhh。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值