使用jdbc连接数据库时,为什么要先使用Class.forName(String name)加载类?

2025-01-02 21:09:32
推荐回答(3个)
回答1:

是为了声明当前用的是哪个数据库驱动,以及将驱动注册到驱动管理器里面以sqlserver为例
你除了可以用Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance()来实现对数据库驱动的声明,你还可以用DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());来实现同样的效果
你可以反编译SQLServerDriver.class来看一下,他在被实例化的时候会调用BaseDriver.registerDriver(new SQLServerDriver());方法,来将自己注册到驱动管理器 里面

然后你取得数据库连接的时候不是需要调用DriverManager.getConnection(url,username,password);方法么,只有注册了驱动,系统才知道你连接的是什么数据库,用哪个驱动程序.

回答2:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")//加载数据库驱动
感觉和声卡驱动,网卡驱动一个道理,但是也不一样的地方。
class.forName()是运用反射的原理创建对象
通俗地说,平时我们创建对象都是用Studeng s = new Studeng()的方式,而class.forName()也是创建对象的一种方式,等你学了反射就知道了。现在你只要知道class.forName()是创建了一个对象就可以

回答3:

不加载此类,此类 怎么去调用某些类的方法呢,这也是规矩!