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

标签 java database oracle validation jdbc

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

           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_DRIVER 作为 sqlserver URL (net.sourceforge.jtds.jdbc.Driver) 和 DB_URL,USER,PASS 我的 oracle 实例然后它也会为我创建连接但逻辑上它是错误的。

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

但我总是想检查对应于给定 DB_URL、USER、PASS 的有效 JDBC_DRIVER

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

最佳答案

解释 - 场景 1/场景 2

来自 oracle documentation

Applications no longer need to explictly load JDBC drivers using Class.forName(). Existing programs which currently load JDBC drivers using Class.forName() will continue to work without modification.

因此,即使您注释掉 Class.forName(JDBC_DRIVER);,您也会得到与 ojdbc6 在您的类路径和 DriverManager.getConnection(...); 中相同的结果; 方法你正在传递 oracle 数据库相关信息。所以 DriverManager 总是只返回 oracle 数据库的连接实例。

解释 - 想要检查与给定 DB_URL、USER、PASS 相对应的有效 JDBC_DRIVER

为此你可以使用 getDriver(String url) DriverManager 类的方法。

getDriver(String url)

Attempts to locate a driver that understands the given URL.

关于java - 在java中测试JDBC连接时如何检查有效的驱动程序名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33537914/

相关文章:

java - 如何仅使用一个 Steam 帐户测试 Steamworks P2P 应用程序?

android - 我如何在每台设备上更新我的 Android 应用程序的现有数据库?

c# - 如何在对模型进行更改后更新数据库快照以匹配数据库

database - 将数据从一个列传输到不同表中的不同列

java - hibernate :saving child entity

java - int[] 与 ArrayList<>() 在 Java 中的内存、动态编程中的比较

java - 在调用 Activity.Recreate() 之后维护我的 Activity 后台的最佳方法是什么?

sql - 使用 SQL 计算库存在某个地点的天数

mysql - 对大量数据使用像JSON_EXTRACT这样的SQL函数好不好

sql - ORA-06511 : PL/SQL Cursor already open