除非使用完整路径,否则找不到合适的驱动程序

Posted

技术标签:

【中文标题】除非使用完整路径,否则找不到合适的驱动程序【英文标题】:No Suitable driver found unless full path used 【发布时间】:2015-07-13 18:28:29 【问题描述】:

当尝试使用 ucanaccess 连接到 MS Access 数据库时,我在使用数据库的相对路径时不断收到“找不到合适的驱动程序”错误:

SEVERE: null
java.sql.SQLException: No suitable driver found for jdbc:ucanaccess:PatientLog.accdb
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at connectiontester.OpenDB.openConnection(OpenDB.java:33)
    at connectiontester.ConnectionTester$1.handle(ConnectionTester.java:41)
    at connectiontester.ConnectionTester$1.handle(ConnectionTester.java:37)

为了确保我的相对路径正确,我使用 DirectoryStream 获取目录列表,并且我的数据库 (PatientLog.accdb)确实显示在列表中。奇怪的是,当我使用完整路径时,错误消失了。

有人知道为什么吗?任何人都有解决方案,所以我可以使用相对路径?

使用 Java 1.8 更新 45

Netbeans 8.0.2

Windows 8

Ucanaccess 2.0.9.5(和依赖项)

【问题讨论】:

【参考方案1】:

错误消息显示您缺少文件名前的两个斜杠。指定相对路径时,您的连接 URL 应如下所示:

jdbc:ucanaccess://PatientLog.accdb

在指定完整路径时,您应该使用如下内容:

jdbc:ucanaccess://C:/Users/Gord/Desktop/PatientLog.accdb

【讨论】:

其实这两种方法我都试过了,都报同样的错误。 但是这个异常并不是模棱两可的,如果 ucanaccess 找不到文件,则会抛出带有包装 FileNotFoundException 的 UCanAccessException(并且给定文件的消息不存在)。您只是在 jdbc:ucanaccess: 之后丢失了 //,因此 DriverManager 会抛出“找不到合适的驱动程序”(这意味着 ucanaccess 不接受 jdbc url)。

以上是关于除非使用完整路径,否则找不到合适的驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

找不到模块“ngx-bootstrap”

在 java 中与 MS Access 数据库建立 SQL 连接时找不到合适的驱动程序

使用Cloud Foundry部署React应用程序时,除非删除浏览器数据,否则我的用户看不到更改

找不到合适的司机 13

为啥使用 Slick 和 PostgreSQL 播放操作失败并显示“找不到合适的驱动程序”?

除非我“强制关闭”应用程序,否则在 Windows 中看不到由 Android 应用程序在 SD 卡上写入的文件