连接到数据库时,Class.forName(“oracle.jdbc.driver.OracleDriver”)的实际用途是什么?

什么命令

Class.forName("oracle.jdbc.driver.OracleDriver") 

连接到Oracle数据库时正确吗? 有没有另一种做同样的事情?

它使用FQCN(完全限定类名) oracle.jdbc.driver.OracleDriver获得对类对象的引用。

除了确保指定的类被当前的类加载器加载之外,它不会“连接到数据库”做任何事情。 写作之间没有根本的区别

 Class<?> driverClass = Class.forName("oracle.jdbc.driver.OracleDriver"); // and Class<?> stringClass = Class.forName("java.lang.String"); 

Class.forName("com.example.some.jdbc.driver")调用显示在使用JDBC的传统代码中,因为这是加载JDBC驱动程序的传统方式 。

从Java教程 :

在以前的JDBC版本中,要获得连接,首先必须调用方法Class.forName来初始化JDBC驱动程序。 这个方法需要一个java.sql.Drivertypes的对象。 每个JDBC驱动程序包含一个或多个实现接口java.sql.Driver

在您的类path中find的任何JDBC 4.0驱动程序都会自动加载。 (但是,您必须使用Class.forName方法手动加载JDBC 4.0之前的任何驱动程序。

进一步阅读(阅读:这是一个重复的问题)

  • 如果您不使用返回值,Class.forName()将提供什么function?
  • Class.forName()如何工作?
  • 什么'Class.forName(“org.sqlite.JDBC”);' 做?
  • “Class.forName(”MY_JDBC_DRIVER“)”的目的是什么?
  • 加载JDBC驱动程序

它注册了驱动程序; 一些forms的东西:

 public class SomeDriver implements Driver { static { try { DriverManager.registerDriver(new SomeDriver()); } catch (SQLException e) { // TODO Auto-generated catch block } } //etc: implemented methods } 

从Java的JDBC教程 :

在以前的JDBC版本中,要获得连接,首先必须调用方法Class.forName来初始化JDBC驱动程序。 在您的类path中find的任何JDBC 4.0驱动程序都会自动加载。 (但是,您必须使用Class.forName方法手动加载JDBC 4.0之前的任何驱动程序。

因此,如果您在Java 1.6中使用Oracle 11g(11.1)驱动程序,则不需要调用Class.forName 。 否则,你需要调用它来初始化驱动程序。

在Java 6之前, DriverManager类不会知道您想要使用哪个JDBC驱动程序。 Class.forName("...")是预加载驱动程序类的一种方法。

如果您正在使用Java 6,则不再需要执行此操作。

另一种方法是使用jdbc.drivers系统属性在启动JVM时在命令行上指定所需的驱动程序。

该命令加载Oracle jdbc驱动程序的类以使其可用于DriverManager实例。 加载类后,系统可以使用它连接到Oracle。 作为替代,您可以使用DriverManager的registerDriver方法,并将其传递给您需要的JDBC驱动程序的实例。

使用oracle.jdbc.OracleDriver,而不是oracle.jdbc.driver.OracleDriver。 如果驱动程序jar文件位于“WEB-INF \ lib”目录中(如果使用的是Tomcat),则不需要注册它。 将其另存为test.jsp并将其放在您的Web目录中,然后在Tomcatpipe理器中重新部署您的Web应用程序文件夹:

 <%@ page import="java.sql.*" %> <HTML> <HEAD> <TITLE>Simple JSP Oracle Test</TITLE> </HEAD><BODY> <% Connection conn = null; try { Class.forName("oracle.jdbc.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:thin:@XXX.XXX.XXX.XXX:XXXX:dbName", "user", "password"); Statement stmt = conn.createStatement(); out.println("Connection established!"); } catch (Exception ex) { out.println("Exception: " + ex.getMessage() + ""); } finally { if (conn != null) { try { conn.close(); } catch (Exception ignored) { // ignore } } } %>