分类: Java
2014-04-14 22:23:28
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.()完成。