【JDBC】JDBC中的Class.forName("")与ojdbcX.jar的区别和联系

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43548748/article/details/94654127

问题的由来:
【JDBC】通过JDBC的方法连接Oracle数据库并进行简单操作(含demo)

下面是测试时间:

ojdbc6.jar驱动下载
ojdbc14.jar驱动下载
第一步骤的Class.forName("oracle.jdbc.driver.OracleDriver");和第二步骤的项目加载入ojdbcX.jar有何关联?同一个东西吗?一头雾水。
第一次尝试:
在项目加载ojdbc6.jar!对,ojdbc6.jar
在代码注释掉Class.forName("oracle.jdbc.driver.OracleDriver");
运行一遍…发现还能执行。
在这里插入图片描述
第二次尝试:
在项目中卸掉ojdbc6.jar
恢复Class.forName("oracle.jdbc.driver.OracleDriver");
运行…提示错误
在这里插入图片描述

第三次尝试
在项目中加载ojdbc14.jar
恢复Class.forName("oracle.jdbc.driver.OracleDriver");
运行成功
在这里插入图片描述

第四次尝试:
在项目中加载ojdbc14.jar
在代码注释掉Class.forName("oracle.jdbc.driver.OracleDriver");
运行…提示错误
在这里插入图片描述

第五次尝试
在项目中卸掉ojdbc6.jar
在代码注释掉Class.forName("oracle.jdbc.driver.OracleDriver");
运行…却发现和第四次尝试一样的错误提示
在这里插入图片描述

第四次第五次的尝试可以猜测出:Class.forName("oracle.jdbc.driver.OracleDriver");是用于加载ojdbcX.jar文件的。

那为什么第一次第四次的都是加载ojdbcX.jar、注释Class.forName("");两者情况一致,怎么前者运行成功,而后者失败呢?这可以猜测出:
可能是ojdbc6.jar和ojdbc14.jar版本不一样,前者可以自动载入程序中,而后者出于安全性问题,去除了自动载入的方法。

猜你喜欢

转载自blog.csdn.net/weixin_43548748/article/details/94654127