我如何找到所有可用的JDBC类?

问题描述 投票:0回答:1

我有一个库方法,可用于连接到数据库,然后使用数据库中的数据构建文档。

当他们不带参数运行此应用程序时,我想列出所有available sql供应商连接。基于this question,我猜测它是使用ServiceLoader完成的,但是我不清楚如何执行此操作。

最重要的是,我想获取类“ com.mysql.jdbc.Driver”,并且必须以连接字符串语法的开头“ jdbc:mysql:”。

所以,如何获得类路径中所有JDBC连接器的类(可选)和连接字符串开始(必需)?

java jdbc serviceloader
1个回答
0
投票

没有在JDBC中定义的方法来自动发现驱动程序的JDBC URL格式。

您需要自己保存JDBC URL格式的注册表(例如,链接到一个或多个驱动程序),然后使用ServiceLoaderDriverManager查找可用的驱动程序,并使用该驱动程序确定可以使用的URL格式。使用。

[请注意,JDBC允许多个驱动程序使用相同的JDBC URL格式(第一个成功连接'wins'的驱动程序,并且一个驱动程序可以具有多个JDBC URL格式。

要发现类路径上的JDBC驱动程序,可以使用

ServiceLoader<Driver> loadedDrivers = ServiceLoader.load(Driver.class);
for (Driver driver : loadedDrivers) {
    // do something with Driver
}

请注意,使用for-each可能不是最佳解决方案。显式使用迭代器可能更好,因为如果特定驱动程序无法加载,则可以显式处理抛出的ServiceConfigurationError

或者,您可以使用

Enumeration<Driver> drivers = DriverManager.getDrivers();

并且让DriverManager负责发现驱动程序。

© www.soinside.com 2019 - 2024. All rights reserved.