首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过registerDriver( )方法加载Type2JDBC驱动?

如何通过registerDriver( )方法加载Type2JDBC驱动?
EN

Stack Overflow用户
提问于 2018-05-20 13:53:53
回答 2查看 479关注 0票数 0

我正在尝试通过registerDriver();方法加载Type-2(Native API)驱动程序。但它说OracleDataSource不能转换为Driver。

代码语言:javascript
复制
 import java.sql.DriverManager;
    import java.sql.SQLException;

    import java.util.Enumeration;
    public class Driver2_Load2 
    {
        public static void main(String[] args) throws SQLException
        {
            oracle.jdbc.pool.OracleDataSource d = new oracle.jdbc.pool.OracleDataSource();
            DriverManager.registerDriver(d);

            Enumeration e = DriverManager.getDrivers();
            if(e.hasMoreElements())
            {
                System.out.println(e.nextElement());
            }
        }
}

然后我尝试了类型转换:

代码语言:javascript
复制
oracle.jdbc.pool.OracleDataSource d = new oracle.jdbc.pool.OracleDataSource();
DriverManager.registerDriver((Driver) d);

但是它抛出了一个异常,java.lang.ClassCastException: oracle.jdbc.pool.OracleDataSource cannot be cast to java.sql.Driver

要运行:-

代码语言:javascript
复制
set classpath=;D:\ORACLE-11g\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6.jar;
javac Driver2_Load2.java
java Driver2_Load2
EN

回答 2

Stack Overflow用户

发布于 2018-05-20 17:18:46

加载类型2驱动程序与加载类型4驱动程序没有区别,因为实际的驱动程序类总是相同的。Type2驱动程序还需要安装完整的Oracle客户机(与Type4驱动程序相反,后者只需要.jar文件)

对于任何现代的Java和驱动程序版本,都不需要调用registerDriver()class.forName()。您所需要做的就是使用oci协议而不是thin协议提供连接URL。

使用驱动程序协议ocijdbc:oracle:oci:...建立As documented in the manual连接

因此,要创建OCI连接,您需要在URL中指定:

代码语言:javascript
复制
DriverManager.getConnection("jdbc:oracle:oci:@//localhost:1521/orcl", "hr", "hr");

但是,要安装包含所有需要的all的Oracle客户机并使其可用于您的JVM,您需要,但是不需要调用registerDriver() (或Class.forName())。

关于您的代码:正如类名所示,oracle.jdbc.pool.OracleDataSourcejavax.sql.DataSource的实现,而不是javax.sql.Driver

registerDriver()需要java.sql.Driver的类名,而不是DataSource的类名。

Oracle驱动程序类是oracle.jdbc.OracleDriver

无关,但是:为什么您认为首先需要OCI驱动程序?Oracle recommends使用瘦驱动程序,除非您有非常特殊的要求,例如,您需要在RAC环境中进行“透明应用程序故障转移”。

票数 2
EN

Stack Overflow用户

发布于 2018-05-20 15:05:32

参见https://docs.oracle.com/cd/F49540_01/DOC/java.815/a64685/basic1.htm,其语法为:

代码语言:javascript
复制
DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); 
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50432071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档