Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27715
  • 博文数量: 9
  • 博客积分: 47
  • 博客等级: 民兵
  • 技术积分: 95
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-03 21:29
文章分类

全部博文(9)

文章存档

2014年(4)

2012年(3)

2011年(2)

我的朋友

分类: Java

2014-04-14 22:23:28

写java的都知道jdbc连接数据库的时候
会写类似下面那些代码
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databasename=master","sa","sa"); 
Statement stmt; ResultSet rs; String sql="select * from student"; stmt = conn.createStatement(); rs = stmt.executeQuery(sql);
那么Class.forName究竟做了哪些,查了一些解释forName会加载指定类。
但是不理解和数据库驱动有什么关联。实际上
DriverManager.getConnection会从registeredDriver里面读取相应的驱动。
而我们需要的驱动又是何时注册到registeredDriver里的呢?原来java要求驱动必须将自己注册进去。
即在类的静态初始化去里注册。类似
static {
registeredDriver.add(MyDriver);
}
当执行forName的时候机会执行静态初始化,完成数据库驱动注册。
而实际的Connection是利用放射机制Driver.()完成。
 


阅读(831) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~