我已将多个 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
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/