DriverManager(驱动管理对象)
1. 注册驱动
* 告诉程序改使用哪一个数据库驱动jar
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
从本质上来说,这段代码不能说是注册驱动。因为,在Java中万物皆对象。要想创建驱动,需要用DriverManager对象来调用它里面的注册驱动的方法(registerDriver(Driver driver) )来实现这一功能。代码如下:
DriverManager.registerDriver(Driver driver)
通过观察我们发现, 这段代码似乎和上面写的注册驱动的代码并没有直接的联系。我们把com.mysql.jdbc.Driver这个类文件加载进内存,但是后面我们并没有用到这个Driver类,那我们写它有什么用嘞。这个时候,我们知道在Java中,有些代码会随着类的加载而自动执行,我们称之为静态代码块。所以我么可以猜测在“com.mysql.jdbc.Driver”类中一定会有静态代码块的存在。通过查看源码我们可以发现,在Driver类中真的存在这样一段静态代码块。
Driver类代码 :
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
public Driver() throws SQLException {
}
//静态代码块
static {
try {
DriverManager.registerDriver(new Driver()); //注册驱动
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
在这段静态代码块里面我们找到了注册驱动的方法。
所以Class.forName("com.mysql.jdbc.Driver")这段代码是将Driver类的字节码文件加载进内存,与此同时Driver类中的静态代码块也会随着类的加载而去自动执行(且仅执行一次),完成注册驱动。所以说真正注册驱动的是DriverManager,只不过我们用Class.forName("com.mysql.jdbc.Driver")这种方式写起来比较简单。
2. 获取数据库连接
方法:
static Connection getConnection(String url,String user,String password)
参数:
1. URL:指定连接路径
语法:jdbc:mysql://IP地址:端口号/数据库名称
细节:如果连接的是本机MySQL服务器,并且服务器的默认端口号是3306,则URL可简写为:jdbc:mysql:///数据库
2. user:用户名(MySQL默认用户为root)
3. password: 密码