使用Java连接到Oracle数据库时的Class.forName(driverName)

时间:2015-10-23 13:09:32

标签: java oracle jdbc

我已经完成了一个基本的copy-paste代码,可以在这里连接到oracle服务器:

import java.sql.Connection;
import java.sql.DriverManager;

public class OracleClass {
    protected String driverName = "oracle.jdbc.driver.OracleDriver";
    protected Connection dbConnection;
    protected String username = "someUsername";
    protected String password = "somePassword";
    protected String server = "MYSERVER";
    protected String port = "1521";
    protected String sid = "MYSID";

    public OracleClass() {
        String url = "jdbc:oracle:thin:@" + server + ":" + port + ":" + sid;
        Class.forName(driverName);   // What does this do???
        dbConn = DriverManager.getConnection(url, username, password);
    }

    /** 
     * Other methods
     */
}

这可以工作,连接,我可以查询数据库并从中获取ResultSet,但Class.forName(DriverName)行有什么作用?它应该返回一个静态类,但我不会将它分配给任何东西(我认为我需要这样做)。看起来它什么也没做。

它做什么?需要吗?

1 个答案:

答案 0 :(得分:2)

来自文档:

  

返回与具有给定字符串名称的类或接口关联的Class对象。调用此方法相当于:   Class.forName(className,true,currentLoader)   其中currentLoader表示当前类的定义类加载器。

这实际上是Java SQL样板代码中的一个古老习惯用法,以确保在使用驱动程序之前可以加载和加载驱动程序类。