在java中测试JDBC连接时如何检查有效的驱动程序名

在java中测试JDBC连接时如何检查有效的驱动程序名,java,database,oracle,validation,jdbc,Java,Database,Oracle,Validation,Jdbc,我已经在我的类路径中添加了多个jar(ojdbc6用于oracle,jtds-1.2.jar用于sqlserver)。 当我使用以下代码测试连接时: Class.forName(JDBC_DRIVER); System.out.println("Connecting to database..."); conn = DriverManager.getConnection(DB_URL,USER,PASS); if(c

我已经在我的类路径中添加了多个jar(ojdbc6用于oracle,jtds-1.2.jar用于sqlserver)。 当我使用以下代码测试连接时:

           Class.forName(JDBC_DRIVER);
          System.out.println("Connecting to database...");
          conn = DriverManager.getConnection(DB_URL,USER,PASS);
         if(conn==null){
             System.out.println("false");
         }
         else{
             System.out.println("true");
         }
情景1: 如果我将JDBC_驱动程序作为SQLServerURL(net.sourceforge.jtds.JDBC.DRIVER)提供 DB_URL,USER,传递给我的oracle实例,然后它也会为我创建连接,但逻辑上它是错误的

情景2: 如果我在ojdbc6.jar中给其他一些(不是oracle.jdbc.driver.OracleDriver)有效类和有效的DB_URL USER,PASS,那么它也将创建连接

但我总是想检查与给定DB_URL、USER、PASS相对应的有效JDBC_驱动程序

我还尝试了driverManager中提供的registerDriver和deregisterDriver API。使用它的优点和缺点是什么。

场景1/场景2的解释

应用程序不再需要使用Class.forName()显式加载JDBC驱动程序。当前使用Class.forName()加载JDBC驱动程序的现有程序将继续工作,无需修改

因此,即使您注释掉
Class.forName(JDBC_驱动程序)您将获得与类路径和
DriverManager.getConnection(…)中的ojdbc6相同的结果
method您正在传递oracle数据库相关信息。因此,
DriverManager
始终只返回oracle数据库的连接实例

解释-要检查与给定数据库URL、用户、PASS对应的有效JDBC_驱动程序

为此,您可以使用DriverManager类的方法

getDriver(字符串url)

尝试查找理解给定URL的驱动程序


要检查有效的驱动程序名称,请尝试以下几行

conn = DriverManager.getConnection(this.dbUrl, this.dbUser, this.dbPassword);
DatabaseMetaData dbMetaData = conn.getMetaData();
this.databaseProperties.add("Driver Name: " + dbMetaData.getDriverName());

不要使用
Class.forName()
DriverManager.getConnection()
将根据URL确定正确的类。如果给定的URL没有可用的驱动程序,您将收到一个错误。谢谢您的解决方案。它使用DriverManager的getDriver方法工作。我还有一件事要做:Driver currentDriver;连接con=null;currentDriver=(Driver)Class.forName(JDBC_Driver).newInstance();con=currentDriver.connect(dbURL,属性);