Java 如何找到所有可用的JDBC驱动程序?

Java 如何找到所有可用的JDBC驱动程序?,java,jdbc,serviceloader,Java,Jdbc,Serviceloader,我有一个库方法,可以用来连接到数据库,然后使用数据库中的数据构建文档 当他们在没有参数的情况下运行此应用程序时,我想列出所有可用的sql供应商连接。根据我的猜测,它已经完成使用,但它不清楚我到底如何做到这一点 关键是我想得到类“com.mysql.jdbc.Driver”,我必须得到连接字符串语法的“jdbc:mysql:”开头 那么,如何在类路径中获取所有JDBC连接器的类(可选)和连接字符串start(必需)?JDBC中没有定义自动发现驱动程序的JDBC URL格式的方法 您需要自己保存JD

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

当他们在没有参数的情况下运行此应用程序时,我想列出所有可用的sql供应商连接。根据我的猜测,它已经完成使用,但它不清楚我到底如何做到这一点

关键是我想得到类“com.mysql.jdbc.Driver”,我必须得到连接字符串语法的“jdbc:mysql:”开头


那么,如何在类路径中获取所有JDBC连接器的类(可选)和连接字符串start(必需)?

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

您需要自己保存JDBC URL格式的注册表(例如链接到一个或多个驱动程序),然后使用
ServiceLoader
DriverManager
,发现可用的驱动程序并使用这些驱动程序确定可以使用哪些URL格式

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

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

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

让DriverManager负责发现驱动程序。

也许你可以使用一个框架,抽象数据访问层,即所有与数据库的对话

我可以向您推荐Spring数据JDBC


但是有更多的框架,你可以找到作为或映射,可以帮助你

@user85421不幸的是,这没有提供“jdbc”mysql:“语法信息。您当然可以使用
ServiceLoader.load(Driver.class)
DriverManager.drivers()
列出驱动程序,但据我所知,无法自动确定驱动程序的JDBC URL的语法。ServiceLoader或DriverManager.getDrivers()非常好;您必须从其他地方(例如)获取URL列表。
Enumeration<Driver> drivers = DriverManager.getDrivers();