有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在运行时从连接对象获取JDBC驱动程序类名?

我创建了JDBC连接,如下所示:

java.sql.Connection conn =  java.sql.DriverManager.getConnection(
                    "jdbc:oracle:thin:@localhost:1521:DBSID", "DB_USER",
                    "DB_PASS");

如何在运行时获取JDBC驱动程序类名(例如,“oracle.JDBC.driver.OracleDriver”),类似于:

String driverClsName  = getDriverClsName(conn);
//e.g.  driverClsName = "oracle.jdbc.driver.OracleDriver"

我已经搜索了stackoverflow,但没有找到最终的解决方案

已查看How to get driver class name (not driver name) from jdbc connection

以下方法中的代码应该是什么:

String getDriverClsName(Connection conn){
    //code here
}

我已经尝试了conn.getMetaData().getDriverName();,它返回的是Oracle JDBC驱动程序

我的要求是显示有关应用程序中使用的当前驱动程序的信息(例如类名)


共 (2) 个答案

  1. # 1 楼答案

    DriverManager.getDriver(String)应该这样做:

    Connection conn = DriverManager.getConnection(...); 
    
    String originalURL = conn.getMetaData().getURL();
    Driver drv = DriverManager.getDriver(originalURL);
    String driverClass = drv.getClass().getName();
    
  2. # 2 楼答案

    请尝试以下方法:

    conn.getMetaData().getDriverName();
    

    其他几种可用的方法:

    conn.getMetaData().getDriverVersion();
    conn.getMetaData().getDriverMajorVersion();
    conn.getMetaData().getDriverMinorVersion();