首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

JDBC的Class.forName解决方法

2012-03-30 
JDBC的Class.forName在java连接数据库的时候,必不可少的一个操作,Class.forName()这样就是用到了java的反

JDBC的Class.forName
在java连接数据库的时候,必不可少的一个操作,Class.forName();
这样就是用到了java的反射机制,加载了数据库驱动的类,
但是问题就是,我只是加载了,但是没有具体的调用啊,下面紧接着就是DriverManage的使用了,
没有把相应的Class.forName()赋值给一个Class的实例对象,那么在内存里面他是具体怎么实现的呢?

[解决办法]
意思是把那个类的类型加载到类加载器去,然后通过DriverManage去实例化一个实例
[解决办法]
Class.forName(); 会导致JVM装载该目标类的类定义。

这又会触发什么呢?会触发目标类static操作,那么目标类的static操作会到DriverManage去注册自己,然后DriverManage就能知道它能处理什么类型的 数据库URL 了。
[解决办法]
给你一个例子:

Java code
package com;public class Test {    static int a;        public static void main(String[] args)throws Exception{        Class.forName("com.A");        System.out.println(a);    }}class A{        static{        Test.a = 10;    }    }
[解决办法]
楼主去我的博客看一下那篇《服务提供者框架》 博客吧。。。看完你就懂了。

热点排行