在java中测试JDBC连接时如何检查有效的驱动程序名
我已经在我的类路径中添加了多个jar(ojdbc6用于oracle,jtds-1.2.jar用于sqlserver)。 当我使用以下代码测试连接时:在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
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,属性);